91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity3D項目開發一點經驗

發布時間:2020-02-28 04:21:02 來源:網絡 閱讀:453 作者:蓬萊仙羽 欄目:游戲開發

我們主要使用3dsmax2010進行制作,輸出FBX的類型導入Unity3D中。默認情況下,3dsmax8可以和U3D軟件直接融合,自動轉換為FBX物體。

注意事項如下:

1.面數控制

      在MAX軟件中制作單一GameObject物體的面數不能超過65000個三角形,即32500個多邊形Poly,如果超過這個數量的物體不會顯示出來,這就需要我們合理分布多邊形和模型數量。打開MAX場景,選擇File/Properties/SummaryInfo可以打開文件屬性記錄。其中Faces可以看到每個物體的實際數量,個體數量不能超過65000個Faces面。

2.建模控制

      Unity3D軟件支持Line渲染和編輯之后所產生的模型。大部分模型都依靠Polygon進行制作。在模型表面可以承認多出四邊形的面,但不渲染交錯的面。默認情況下,U3D引擎是不承認雙面材質的,除非使用植物材質球Nature類型。所以在制作窗戶、護欄等物體,如果想在兩面都能看到模型,那需要制作出厚度,或者復制兩個面翻轉其中一個的Normal法線。

3.文件的放置

      模型可以繼承MAX的材質,但是文件的設置要按照以下形式進行放在項目的Assets文件夾內,新創建一個Object文件夾。并在其中創建Materials和Texture文件夾(分別自動存放材質球和貼圖)。模型物體并列保存在Object文件夾內。這個規律模式不要打亂,否則會破壞整個系統邏輯。

4.材質數量控制

      如果一個物體給與一個材質球,那么Unity3D對于材質數量和貼圖數量沒有任何的限制。如果一個物體給與多個材質球,我們需要用Multi/SubObject來實現,但是這種羅列的材質球的數量沒有嚴格的控制,但盡量保持在10以內,過多的數量會導致一些錯誤。如果不使用Multi/SubObject材質球,也可以選擇一些面,然后給與一個材質球。這樣系統會自動將其轉換成Multi/SubObject材質。綜合而言Unity3D軟件對于材質的兼容還是很好的。

5.物體的質感

Diffuse       Diffuse Bumped        Bumped Specular

這三種類型為常用類型,其中Bumped需要增加Normal法線貼圖來實現凹凸。

Decal

這種材質為貼花材質,即相當于Mask類型,可以再Decal(RGBA)貼與一個帶有Alpha通道的圖像,形成和原圖像相疊加的效果。

Diffuse Detail

這種材質可以創造出污跡和劃痕的效果,即相當于Blend混合材質。

Reflective

其中各種類型可以創造出金屬反射效果,需要增加Cubmap貼圖。

Transparent

其中各種類型可以創造出透明的效果,需要增加具有Alpha的通道貼圖。

注意:如果要做玻璃貼圖,Alpha如果全是灰色或黑色(即要求全透明),那么Alpha就會失效,如果要全透明,材質Alpha其中必須至少有1像素為白色。

Nature

其中SoftOcclusion Leaves類型主要應用于片狀的樹葉材質。

6.物體尺寸

      默認情況下U3D系統單位1等于1米,等于軟件1單位。如果我們制作是按照實際大小比例制作,那么導入U3D引擎會自動變成原來的1%的大小。因為默認情況下,U3D的FBXImporter中的Scale Factor的數值為0.01。那個我們可以將ScaleFactor的數值恢復為1,但是這樣會占用模型資源,比較消耗物理緩存。我們也可以將這個物體從Hierarchy中選擇,并使用Scale放大100倍,這種設置可以有很多好處,并且還能通過用腳本制作動畫。

7.關于復制

      場景中的燈光布局,重復的模型物體都可以使用系統Prefab進行關聯復制,這樣可以改變一個參數的同時將所有關聯物體屬性改變。

8.山脈控制

       在創建山脈之后,選擇Terrain/Set Resolution可以設置山脈的大小和屬性。需要注意的是,默認情況下TerrainWidth和Terrain Height為1000米。如果設置這個數值太小,那么繪制草的時候會產生偏移,因為草的尺寸必須減少到0.1的單位。也就是說,山脈在處理0.1單位的時候會產生0.01的偏差,如果模型太小,這種偏差是顯而易見的,所以建議用戶不要讓模型過小。

9.光暈控制

       光暈又稱為Lens Flare即燈光光效。可以選擇一個GameObject物體給與Component/Rendering/LensFlare,并在Flare中增加一個StandardAssets/Light Flares/50mm Zoom項目。這樣在運行之后就會產生光暈。但有時候如果光暈太遠太高卻看不到。一種辦法是將光暈離近,另一種辦法是將所有攝影機Camera的Far clip plane的數值增加。

10.攝影機控制

       如果場景中有多架攝影機,那么如何確定第一打開時間所顯示的攝影機,就需要設置Camera屬性中的Depth數值,數值越大的攝影機越優先顯示。

posted @ 2013-08-02 20:49 蓬萊仙羽 閱讀(3) 評論(0) 編輯
Unity3D使用過程中常見的20個問題

1:天空盒有接縫怎么解決?
答:在貼圖導入設置里設置Wrap Mode為"Clamp".

2:DDS格式怎么不顯示?
答:Unity不支持DDS格式,Unity會將除DDS外的其他格式圖片具有為DDS同樣的優化.

3:Unity如何動態載入外部模型等文件?
答:可以使用AssetBundle:http://unity3d.com/support/docum ... ce/AssetBundle.html

4:腳本編輯器有語法提示嗎?
答:有的,Win版使用Ctrl+I,Mac版使用Ctrl+>.

5:如何使用烘焙貼圖(多重紋理)?
答:不要使用Shell貼圖,直接將烘焙圖賦予貼圖的"自發光"通道之上.

6:怎么屏蔽Webplayer右鍵菜單?
答:<param name="disableContextMenu" value="true" />

7:為什么水面沒有實時反射效果?
答:只有專業版才支持這種反射效果.

8:怎么做攝像機漫游動畫?
答:Max正常制作攝像機漫游動畫,倒到Unity中后,將Unity的Camea拖拽到Max導出的攝像機Gameobject物體之上,作為其子物體即可.

9:如何自定義Webplayer載入Logo及進度條?
答:<param name="logoimage" value="Logo文件名" />,<param name="progressbarimage" value="進度條名"  />,<param name="progressframeimage" value="進度條外框名" />.

10:GUI上怎么使用中文字?
答:導入任意中文字體,然后定義GUISkin字體為該字體即可.

11:購買一個授權可以安裝幾臺電腦?
答:可以安裝于2個系統之上比如一個Win版一個Mac版.

12:Max文件扔到Unity中怎么說導入失敗?
答:下載最新版Fbx插件,用Max導出Fbx文件然后扔Unity中.

13:如何不讓攝像頭穿透模型,離模型近了就像模型露面了?
答:設置相機的Near clip plane,調小一點,但是不要給負數.

14:怎么用雙面貼圖?
答:Unity中可設置雙面Shader,最簡單有效的辦法是直接做成雙面的實體模型.

15:導入的Fbx模型尺寸小于Max中的尺寸?
答:在Unity中該文件的導入設置中設置縮放因子為1.

16:如何給相機添加Glow效果?
答:選中相機對象,在菜單中選中Component-Image Effects-Glow賦予該組件即可(專業版才支持此特效)

17:怎么設置Webplayer默認尺寸?
答:到菜單Edit-Project Settings-Player中設置Default Web Screen尺寸即可.

18:怎么設置可執行文件的啟動Banner?
答:到菜單Edit-Project Settings-Player中設置Resolution Dialog Banner.

19:如何設置霧效?
答:到菜單Edit-Render Settings中開啟Fog及設置Fog Color等即可.

20:如何設定默認Skybox天空盒?
答:到菜單Edit-Render Settings中設置Skybox Material即可.

posted @ 2013-08-02 20:46 蓬萊仙羽 閱讀(1) 評論(0) 編輯
@property中strong跟weak的區別

strong關鍵字與retain關似,用了它,引用計數自動+1,用實例更能說明一切

 

@property (nonatomic, strong) NSString *string1;   

@property (nonatomic, strong) NSString *string2;  

 

有這樣兩個屬性,

 

 @synthesize string1;   

@synthesize string2;  

 

 

猜一下下面代碼將輸出什么結果?

 

self.string1 = @"String 1";   

self.string2 = self.string1;   

self.string1 = nil;  

NSLog(@"String 2 = %@", self.string2);  

 

 

結果是:String 2 = String 1

由于string2是strong定義的屬性,所以引用計數+1,使得它們所指向的值都是@"String 1", 如果你對retain熟悉的話,這理解并不難。

 

接著我們來看weak關鍵字:

如果這樣聲明兩個屬性:

 

@property (nonatomic, strong) NSString *string1;   

@property (nonatomic, weak) NSString *string2;  


并定義 

@synthesize string1;   

@synthesize string2;  

 

  


再來猜一下,下面輸出是什么?

 

 self.string1 = @"String 1";   

self.string2 = self.string1;   

self.string1 = nil;  

NSLog(@"String 2 = %@", self.string2);  


結果是:String 2 = null

 

分析一下,由于self.string1與self.string2指向同一地址,且string2沒有retain內存地址,而self.string1=nil釋放了內存,所以string1為nil。聲明為weak的指針,指針指向的地址一旦被釋放,這些指針都將被賦值為nil。這樣的好處能有效的防止野指針。在c/c++開發過程中,為何大牛都說指針的空間釋放了后,都要將指針賦為NULL. 在這兒用weak關鍵字幫我們做了這一步。

posted @ 2013-08-02 17:29 蓬萊仙羽 閱讀(3) 評論(0) 編輯
C語言面試
摘要: 最全的C語言試題總結第一部分:基本概念及其它問答題 1、關鍵字static的作用是什么?這個簡單的問題很少有人能回答完全。在C語言中,關鍵字static有三個明顯的作用:1). 在函數體,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變。2). 在模塊內(但在函數體外),一個被聲明為靜態的變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問。它是一個本地的全局變量。3). 在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的模塊的本地范圍內使用。大多數應試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個閱讀全文
posted @ 2013-07-30 13:15 蓬萊仙羽 閱讀(7) 評論(0) 編輯
C++中單例模式

//C++單例模式:指一個類只生成一個對象

#include <iostream>

using namespace std;

 

class A{

public:

    static A* getA();

    static A* a;

    int b = 0;

    void funAdd(){

        b++;

        cout<<b<<"\n";

    };

    void funClear(){

        b = 0;

    }

};

 

A *A::a = NULL;

A *A::getA()

{

    if (a == NULL) {

        a = new A;

    }

    return a;

}

 

int main(int argc, const char * argv[])

{

    for (int i=0; i<10; i++) {

        (A::getA())->funAdd();

        if (i == 4) {

            (A::getA())->funClear();

        }

    }

    return 0;

}

posted @ 2013-07-29 19:01 蓬萊仙羽 閱讀(4) 評論(0) 編輯
OC對象的動態和靜態構造區別

Student.h:

#import <Foundation/Foundation.h>  @interface Student : NSObject  @property(nonatomic,retain) NSString * name;  @property(nonatomic,assign) int age;  @end

Student.m:

#import "Student.h"  @implementation Student  //動態方法,在main函數中類alloc了之后調用,但是要手動管理內存,要手動釋放  -(id) initWithAge:(int)age{      if (self == [super init]) {          _age = age;      }      return self;  }     //靜態構造方法,在main函數中不需要你手動管理內存釋放  +(id)studentWithAge:(int)age{      Student *stu = [[[Student alloc] init] autorelease];\      stu.age = age;      return stu;  }     -(NSString *)description{      return [NSString stringWithFormat:@"name:%@ age:%i創建了",_name,_age];  }     -(void)dealloc{      NSLog(@"name:%@ age:%i被釋放了",_name,_age);      [_name release];      [super dealloc];  }  @end 

  

main

 

 1 #import <Foundation/Foundation.h>  2   3 #import "Student.h"  4   5 int main(int argc, const char * argv[])  6   7 {  8   9     @autoreleasepool { 10  11         //動態方法需要手動釋放內存 12  13         Student *stu1= [[Student alloc] initWithAge:10]; 14  15         stu1.name = @"dingxiaowei"; 16  17         NSLog(@"%@",stu1); 18  19         [stu1 release]; 20  21         //靜態構造方法不需要你管理內存 22  23         Student *stu2 =[Student studentWithAge:20]; 24  25         stu2.name = @"wangning"; 26  27         NSLog(@"%@",stu2); 28  29     } 30  31     return 0; 32  33 }
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会同县| 云阳县| 桂阳县| 平远县| 景东| 洛扎县| 大方县| 开鲁县| 桂阳县| 建阳市| 红桥区| 自治县| 乐业县| 涞水县| 陆川县| 张北县| 新化县| 盈江县| 沛县| 普格县| 平顺县| 呼伦贝尔市| 浮山县| 高州市| 新津县| 思茅市| 乐山市| 奉节县| 奉新县| 福清市| 偃师市| 准格尔旗| 赣榆县| 镇原县| 榆林市| 波密县| 寿光市| 鹿邑县| 吴忠市| 长丰县| 洛南县|