Unity3D項目開發一點經驗

我們主要使用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 }














,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392867.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392867.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392867.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 142. 環形鏈表 II(set/快慢指針)

給定一個鏈表&#xff0c;返回鏈表開始入環的第一個節點。 如果鏈表無環&#xff0c;則返回 null。 為了表示給定鏈表中的環&#xff0c;我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置&#xff08;索引從 0 開始&#xff09;。 如果 pos 是 -1&#xff0c;則在該鏈表中沒有…

html5 支持表格嗎,html5 – 在HTML 5中使用表格很好嗎?

簡單規則 – 使用表格表格數據&#xff0c;使用其他元素進行演示(使用CSS設計布局)&#xff0c;如div&#xff0c;section&#xff0c;aside&#xff0c;nav等。這為他們所持有的內容提供了意義&#xff0c;而不是為所有內容使用表事實是&#xff0c;開發人員在90年代使用了表格…

css網格_我如何記住CSS網格屬性

css網格The syntax for CSS Grid is foreign and hard to remember. But if you can’t remember CSS Grid’s syntax, you won’t be confident when you use CSS Grid.CSS Grid的語法是外來的&#xff0c;很難記住。 但是&#xff0c;如果您不記得CSS Grid的語法&#xff0c;…

2017年讀書計劃(一)

前言 這篇博文就暫時不記錄技術了&#xff0c;記錄下生活。對自己今年2017年做個讀書計劃安排。 最近在看一部網絡劇 - 《花間提壺方大廚》&#xff0c;也許你們會感覺我很無聊&#xff0c;我也是被頭條帶壞了&#xff0c;每天上班一個小時的地下交通-地鐵&#xff0c;就借助上…

.net10個必備工具

1.NUnit 編寫單元測試的工具2.NDoc 自動生成代碼文檔的工具3.NAnt 編譯解決方案的工具4.CodeSmith 自動生成代碼的工具5.FxCop 檢查你的代碼是否按照規范編寫的工具6.Snippet Compiler 編譯少量代碼的工具7.ASP.NET Version Switcher Visual Studio .NET Project Conve…

音標

音標 oror ds念子音&#xff0c;ts念s音

leetcode 530. 二叉搜索樹的最小絕對差(中序遍歷)

給你一棵所有節點為非負值的二叉搜索樹&#xff0c;請你計算樹中任意兩節點的差的絕對值的最小值。示例&#xff1a;輸入&#xff1a;1\3/2輸出&#xff1a; 1解釋&#xff1a; 最小絕對差為 1&#xff0c;其中 2 和 1 的差的絕對值為 1&#xff08;或者 2 和 3&#xff09;。代…

計算機排線知識,一種計算機排線梳理裝置制造方法及圖紙

【技術實現步驟摘要】一種計算機排線梳理裝置本技術涉及計算機排線梳理&#xff0c;具體涉及一種計算機排線梳理裝置。技術介紹計算機俗稱電腦&#xff0c;是現代一種用于高速計算的電子計算機器&#xff0c;可以進行數值計算&#xff0c;又可以進行邏輯計算&#xff0c;還具有…

github和pypi_如何將GitHub用作PyPi服務器

github和pypiI was looking for a hosted private PyPi Python Package server, that used credentials that the team already has (such as GitHub).我正在尋找一個托管的私有PyPi Python Package服務器&#xff0c;該服務器使用了團隊已經擁有的憑據(例如GitHub)。 I didn’…

數據結構與算法---查找算法(Search Algorithm)

查找算法介紹 在java中&#xff0c;我們常用的查找有四種: 順序(線性)查找 二分查找/折半查找 插值查找斐波那契查找1)線性查找算法 示例&#xff1a; 有一個數列&#xff1a; {1,8, 10, 89, 1000, 1234} &#xff0c;判斷數列中是否包含此名稱【順序查找】 要求: 如果找到了&a…

Exchange Server 2007郵箱存儲服務器的集群和高可用性技術(上)

高可用性矩陣-->見下圖:郵箱服務器高可用性目標: 數據可用性-->保護郵箱數據免于失敗和損壞服務可用性-->提高群集實效轉移操作 簡化群集管理 支持地理分散的群集 支持低成本大郵箱(GB)使用戶可以基于業務需要更好的選擇容錯方案提高解決方案的可用性使用解決方案可…

【C/C++開發】C++實現字符串替換的兩種方法

替換字符串replace() erase()//C 第一種替換字符串的方法用replace()|C 第二種替換字符串的方法用erase()和insert()【 Cstring|C replace()|C erase()|C insert()|C自定義替換字符串函數】#include<string> #include<iostream> using namespace std;//第一種替換字…

html設置按鈕樣式變為橢圓,css border-radius圓形變為橢圓形,位置:絕對

我正在圍繞字體真棒圖標創建一個圓圈。我的問題是&#xff0c;當我添加position: absolute圓成為一個橢圓。css border-radius圓形變為橢圓形&#xff0c;位置&#xff1a;絕對同樣的情況&#xff0c;如果我是設置display: block這里是什么&#xff0c;我想實現的圖像 -CONRADU…

《火球——UML大戰需求分析》(第1章 大話UML)——1.5 小結和練習

說明&#xff1a; 《火球——UML大戰需求分析》是我撰寫的一本關于需求分析及UML方面的書&#xff0c;我將會在CSDN上為大家分享前面幾章的內容&#xff0c;總字數在幾萬以上&#xff0c;圖片有數十張。歡迎你按文章的序號順序閱讀&#xff0c;謝謝&#xff01;本書已經在各大網…

金陵科技學院計算機開設課程,金陵科技學院各專業介紹

各專業介紹會計學專業(四年制本科) 金融學專業(四年制本科)財務管理專業(四年制本科) 國際經濟與貿易專業(四年制本科)市場營銷專業(四年制本科)國際商務專業(三年制專科)物流管理專業(三年制專科) 對外漢語專業(四年制本科)古典文獻(古籍修復)專業(四年制本科)行政管理(高級秘…

【jQuery Demo】圖片由下至上逐漸顯示

無意中看到如何實現一張圖片從下往上慢慢顯現出來這個問題&#xff0c;弄了半天還是從上往下的效果&#xff0c;糾結了&#xff0c;最后還是提問人自己搞定了&#xff01;不過哈哈&#xff0c;又學到一點知識&#xff01; 1.下面是我自己做的效果(按鈕可以點哦) 圖片由下至上逐…

Morphia - mongodb之ORM框架

一、簡介 二、注解 1、Entity 2、Id3、Indexed4、Embedded5、Transient和Property6、Reference 三、示例 四、參考資料 Morphia快速入門 Morphia 注解詳解 使用Morphia框架操作mongodb 使用 Morphia 和 MongoDB 實現持久化 Spring中Mongodb的java實體類映射 ORM框架Morphia的學…

石頭剪刀布游戲web_Web開發教程-剪刀石頭布

石頭剪刀布游戲webThis web development tutorial shows how to use JavaScript, HTML, and CSS to create a rock Paper Scissors Game in the browser.這份網絡開發教程展示了如何使用JavaScript&#xff0c;HTML和CSS在瀏覽器中創建石頭剪刀布游戲。 Tenzin explains every…

兩個數之和等于第三個數

這是一個很好的算法題&#xff0c;解法類似于快速排序的整理方法。同時&#xff0c;更為值得注意的是這道題是 人人網2014校園招聘的筆試題&#xff0c;下面首先對題目進行描述&#xff1a; 給出一個有序數組&#xff0c;另外給出第三個數&#xff0c;問是否能在數組中找到兩個…

html標題前色塊,CSS輕松實現色塊標題標識

不少網站開始采用韓式風格來建站&#xff0c;這種風格的特點是色彩變化豐富、應用Flash動畫合理、結構新穎&#xff0c;最明顯的特點就是表格或標題欄常會加上一條橫或豎的色帶&#xff0c;如圖1中圈起來的地方就是這樣。(圖一)一般人都會想到用Photoshop等軟件來完成這樣的效果…