久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Unity3D項目開發(fā)一點經驗

 蘇霈兒咪咪 2015-03-05

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

注意事項如下:

1.面數(shù)控制

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

2.建??刂?/span>

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

3.文件的放置

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

4.材質數(shù)量控制

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

5.物體的質感

Diffuse       Diffuse Bumped        Bumped Specular

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

Decal

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

Diffuse Detail

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

Reflective

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

Transparent

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

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

Nature

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

6.物體尺寸

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

7.關于復制

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

8.山脈控制

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

9.光暈控制

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

10.攝影機控制

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

posted @ 2013-08-02 20:49 蓬萊仙羽 閱讀(3) 評論(0) 編輯

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

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

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

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

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

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

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

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個系統(tǒng)之上比如一個Win版一個Mac版.

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

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

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

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

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

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

18:怎么設置可執(zhí)行文件的啟動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) 編輯

strong關鍵字與retain關似,用了它,,引用計數(shù)自動+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定義的屬性,,所以引用計數(shù)+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++開發(fā)過程中,,為何大牛都說指針的空間釋放了后,都要將指針賦為NULL. 在這兒用weak關鍵字幫我們做了這一步,。

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

//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) 編輯

Student.h:

  1. <span style="background-color:rgb(255,255,255)">#import <Foundation/Foundation.h>  
  2.   
  3. @interface Student : NSObject  
  4.   
  5. @property(nonatomic,retainNSString * name;  
  6.   
  7. @property(nonatomic,assign) int age;  
  8.   
  9. @end</span>  

Student.m:

  1. <span style="background-color:rgb(255,255,255)">#import "Student.h"  
  2.   
  3. @implementation Student  
  4.   
  5. //動態(tài)方法,在main函數(shù)中類alloc了之后調用,,但是要手動管理內存,,要手動釋放  
  6.   
  7. -(id) initWithAge:(int)age{  
  8.   
  9.     if (self == [super init]) {  
  10.   
  11.         _age = age;  
  12.   
  13.     }  
  14.   
  15.     return self;  
  16.   
  17. }  
  18.   
  19.    
  20.   
  21. //靜態(tài)構造方法,在main函數(shù)中不需要你手動管理內存釋放  
  22.   
  23. +(id)studentWithAge:(int)age{  
  24.   
  25.     Student *stu = [[[Student alloc] init] autorelease];\  
  26.   
  27.     stu.age = age;  
  28.   
  29.     return stu;  
  30.   
  31. }  
  32.   
  33.    
  34.   
  35. -(NSString *)description{  
  36.   
  37.     return [NSString stringWithFormat:@"name:%@ age:%i創(chuàng)建了",_name,_age];  
  38.   
  39. }  
  40.   
  41.    
  42.   
  43. -(void)dealloc{  
  44.   
  45.     NSLog(@"name:%@ age:%i被釋放了",_name,_age);  
  46.   
  47.     [_name release];  
  48.   
  49.     [super dealloc];  
  50.   
  51. }  
  52.   
  53. @end  
  54. </span>  

  

main

 

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

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多