![unity3d教你如何搭建場景.doc_第1頁](http://file.renrendoc.com/FileRoot1/2019-7/17/1eb9c25d-2c98-4aba-9136-996d96777a0f/1eb9c25d-2c98-4aba-9136-996d96777a0f1.gif)
![unity3d教你如何搭建場景.doc_第2頁](http://file.renrendoc.com/FileRoot1/2019-7/17/1eb9c25d-2c98-4aba-9136-996d96777a0f/1eb9c25d-2c98-4aba-9136-996d96777a0f2.gif)
![unity3d教你如何搭建場景.doc_第3頁](http://file.renrendoc.com/FileRoot1/2019-7/17/1eb9c25d-2c98-4aba-9136-996d96777a0f/1eb9c25d-2c98-4aba-9136-996d96777a0f3.gif)
![unity3d教你如何搭建場景.doc_第4頁](http://file.renrendoc.com/FileRoot1/2019-7/17/1eb9c25d-2c98-4aba-9136-996d96777a0f/1eb9c25d-2c98-4aba-9136-996d96777a0f4.gif)
![unity3d教你如何搭建場景.doc_第5頁](http://file.renrendoc.com/FileRoot1/2019-7/17/1eb9c25d-2c98-4aba-9136-996d96777a0f/1eb9c25d-2c98-4aba-9136-996d96777a0f5.gif)
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Unity3D如何搭建場景搭建本教程將解釋用于創(chuàng)建游戲場景的元素及方法。 1. 游戲物體(GameObject) 在 Unity中昀重要的就是游戲物體。理解什么是游戲物體如何使用它是非常重要的。該部分就將解釋這個概念。什么是游戲物體?在你的游戲中的任何東西都是游戲物體。然而,游戲物體自身并不能做所有的事情。在它們成為角色,環(huán)境或者特定的效果之前它們需要特定的屬性。但是物體中的每一個都會做許多不同的事情。如果每一個物體都是一個游戲物體,我們怎么從一個靜態(tài)房間中區(qū)分一個具有強(qiáng)大交互能力的物體?是什么使得游戲物體相互不同呢?答案就是游戲物體是一個容器。他們是一個空的可以容納不同塊的盒子,而這些塊組成了一個帶有光照貼圖的島或是一個物理驅(qū)動的汽車。為了真正理解游戲物體,你需要理解這些塊;這些塊被稱為組件(Components)。根據(jù)你要創(chuàng)建的物體的不同,你可以添加不同組件到一個游戲物體中。將游戲物體想象為一個空的烹調(diào)罐,組件為不同的組成游戲的配料。游戲物體與組件的關(guān)系現(xiàn)在我們知道游戲物體包含組件。我們將通過使用昀常用的組件變換組件(Transform)來討論這兩者之間的關(guān)系。打開任意一個場景,創(chuàng)建一個新的游戲物體(使用 Shift-Command-N),選擇他并查看檢視面板(Instpector)空物體的檢視面板你可能注意到了這里有兩個完全不同的部分?!盙ameObject”和”Transform”。屬于游戲物體部分的是關(guān)于游戲物體自身的信息。這里只有物體的名稱。變換部分顯示變換組件的信息。當(dāng)你創(chuàng)建一個新的物體時,將會自動包含一個變換組件。所有的物體都會有一個變換組件。在 Unity中你不可能創(chuàng)建一個沒有變換組件的物體,變換組件為所有物體提供了獨(dú)特的功能。變換組件變換組件是昀重要的組件之一。它定義了游戲物體在場景視圖中的位置,旋轉(zhuǎn),和縮放。如果游戲物體沒有旋轉(zhuǎn)組件,那么它將不會存在世界中。參考變換組件部分。變換組件也可以使用一個被稱為父子化(Parenting)的功能,這個功能被編輯器(Unity Editor)利用并且是使用游戲物體昀關(guān)鍵的部分。父子化父子化的意思是你可以使一個游戲物體的變換值完全依賴于另一個不同游戲物體。簡單來說,就是一個物體隨著另一個物體移動。當(dāng)一物體是另外一些物體的父(Parent)物體時,這個物體的旋轉(zhuǎn)將影響所有的子(Child)物體。你可以在層次視圖 (Hierarchy View)中通過拖動任何物體到另一個物體上來創(chuàng)建一個父。這將在兩個物體之間創(chuàng)建父子關(guān)系。這種功能非常類似于文件夾樹的功能,一個游戲物體包含在另一個游戲物體中。需要指出的是所有子物體的變換值都是相對于父物體的,這個被稱為局部坐標(biāo)(Local Coordinates)。通過腳本你可以訪問全局坐標(biāo)(Global Coordinates)和局部坐標(biāo)。一個游戲物體可以有任意多個子物體,但是只能有一個父物體。子物體也可以是其它物體的父物體。你可以很容易的在層次視圖中分辨一個物體是不是一個父物體。如果在它名稱的左邊有一個箭頭,那么它就是一個父物體。一個真實(shí)的父子層次樹,所有帶有箭頭的物體都是父物體記住所有的父子化的功能都是通過游戲物體的變換組件執(zhí)行的,而不是游戲物體自身。游戲物體-腳本關(guān)系當(dāng)你創(chuàng)建一個腳本(script)并將其附加到一個游戲物體上時,這個腳本將在檢視面板中作為一個組件顯示。這是因?yàn)楫?dāng)它們被保存時腳本就變成一個組件。從技術(shù)角度來說,腳本是作為組件的一種來編譯的,就像其它組件一樣。任何在腳本中申明的公有變量都將在游戲物體的檢視面板中顯示為可編輯或可連接。編寫腳本的時候,你能夠直接訪問任何游戲物體類的成員。你可以在這里看到一個游戲物體類的成員列表。如果任何一個類作為一個組件附加在一個游戲物體上,你就可以在腳本中使用成員名來直接訪問這個組件。例如鍵入 transform等同于 gameObject.transform。前面的gameObject是編譯器自動加入的,除非你要指定一個不同的物體。使用 this可以訪問當(dāng)前的腳本組件。使用 this.gameObject可以訪問該腳本所依附的游戲物體,當(dāng)然你可以簡單的使用 gameObject來訪問此游戲物體。邏輯上來說,鍵入 this.transform與 tansform是相同的,如果你想訪問一個組件而該組件并沒有作為一個游戲物體成員包含在其中,你需要使用 gameObject.GetComponent() 2. 使用組件(Using Components) 組件是游戲中一個物體的行為和核心。它們是游戲物體的功能性模塊。如果你還不理解游戲物體和組件之間的關(guān)系,請參考游戲物體部分。一個游戲物體包含許多不同的組件。缺省情況下。所有的游戲物體都包含一個變換(Transform)組件。這是因?yàn)樽儞Q表示物體的位置,旋轉(zhuǎn)和縮放。沒有變換組件,游戲物體將不會有位置。嘗試創(chuàng)建一個空的游戲物體。單擊 GameObject-Create Empty菜單項(xiàng)。選擇新游戲物體,并查看檢視面板。每一個空的游戲物體都有一個變換組件可以使用檢視面板來查看都有什么組件附加在游戲物體上。但一個組件被加入或刪除的時候,檢視面板將顯示當(dāng)前附加的組件??梢允褂脵z視面板來改變?nèi)魏谓M件的屬性 (包括腳本)。添加組件可以通過組件菜單為當(dāng)前的游戲物體添加一個組件。嘗試添加一個剛體(Rigidbody)到剛創(chuàng)建的物體上。選擇該物體并從菜單中選擇 Component-physics-Rigidbody。現(xiàn)在你將會發(fā)現(xiàn)剛體屬性顯示在檢視面板中,如果在該物體被選中的情況下按下播放鍵(Play)你將會有驚喜的發(fā)現(xiàn)。注意剛體是如何在一個空物體上添加功能的。附加了剛體組件的空物體可以附加任意數(shù)量的組件到一個游戲物體。一些組件可以與其他一些組件一起工作。例如,剛體可以和任何碰撞物一起工作。剛體通過 Ageia PhysX物理引擎控制變換,并且碰撞器允許剛體與其它的碰撞器碰撞和交互。一個不同的組件組合例子是一個粒子系統(tǒng) (Particle System)。它們使用一個粒子發(fā)射器 (Particle Emitter),粒子動畫 (Particle Animator)和粒子渲染器(Particle Renderer)來創(chuàng)建一組移動的粒子??梢酝ㄟ^點(diǎn)擊位于檢視面板頭部的問號訪問組件的參考頁。編輯組件一個組件昀重要的方面是其可擴(kuò)展性。當(dāng)你添加一個組件到一個物體上時,它有不同的可以調(diào)整的值或者屬性(Properties),也可以在游戲中通過腳本來調(diào)整它。有兩種不同類型的屬性:值(Values)和引用(References)。下圖中是一個具有音頻源 (Audio Source)組件的空游戲物體。在檢視面板中所有音頻源的值都是缺省的。這個組件包含一個單一的引用屬性和七個值屬性。音頻剪輯 (Audio Clip)是一個引用屬性。當(dāng)這個音頻源開始播放時,它將嘗試播放 Audio Clip屬性所引用的音頻文件。如果沒有添加引用屬性,將會出現(xiàn)一個錯誤因?yàn)闆]有音品將被播放。你必須在檢視面板中引用音頻文件。你可以非常簡單的從工程視圖中將音頻文件拖動到引用屬性中?,F(xiàn)在一個音效文件在音頻剪輯屬性中被引用組件可包含任何其它類型組件的引用,文件或游戲物體。你只需拖動適當(dāng)?shù)囊玫竭@個屬性上。引用類型是非常有用和強(qiáng)大的,尤其是在使用腳本時。參考腳本教程。音頻剪輯中剩下的七個都是值屬性。都可以通過單擊并按下 Enter鍵來調(diào)整它們。使用鍵盤輸入值,并按 Enter保存它。你也可以通過使用 option-或 right-click或拖動數(shù)字屬性來快速滾動這些值。音頻剪輯中的值屬性都是數(shù)字,但是一些屬性也可以是字符串。例如,文本網(wǎng)格(Text Mesh)組件包含一個文本(Text)屬性,這個屬性可以接受字母數(shù)字字符。一些值可以包含字符,例如文本網(wǎng)格中的 Text屬性測試屬性當(dāng)你的游戲處在播放模式 (Play Mode)中時,你可以在游戲物體的檢視面板中修改它的屬性。例如,你或許想試驗(yàn)不同的跳躍高度。如果你在一個腳本中創(chuàng)建了一個跳躍高度 (Jump Height),你可以進(jìn)入播放模式,改變這個值,并按跳躍鍵查看結(jié)果。然后不需要退出播放模式就可以再次改變這個值。當(dāng)你退出播放模式時你的屬性值將恢復(fù)到播放前的值,因此,你不會丟失任何工作。這個工作方式,提供給你難以置信的方便來試驗(yàn),調(diào)整,精簡你的游戲而不必要花費(fèi)大量的時間。移除組件如果你想移除一個組件,在檢視面板的頭部使用 option-或右擊然后選擇移除組件(Remove Component)?;蛘吣憧梢詥螕粑挥诮M件頭部問號旁邊的選項(xiàng)圖標(biāo)。所有的屬性值都將丟失并且是不可恢復(fù)的。因此在移除組件前請確認(rèn)你要這樣做。組件-腳本關(guān)系盡管腳本(Scripts)看起來都與組件不同,事實(shí)是腳本是組件的一種類型。它是一種你自己創(chuàng)建的組件。你可以定義能夠顯示在檢視面板中的成員,并且它將執(zhí)行你寫出的任何功能。腳本組件有很多組件可以通過任何腳本直接訪問。例如,如果你想訪問變換組件的變換(Translate)功能,你只需要使用 transform.Translate()或 gameObject.transform.Translate()。因?yàn)樗械哪_本都是附加在游戲物體上的,所以當(dāng)你寫 transform的時候就暗示要訪問當(dāng)前腳本所在的物體的變換組件。當(dāng)然這兩者完全等價的。使用 GetComponent() 有許多組件不能成為一個游戲物體類的成員。因此你不能隱式訪問它們,必須顯式訪問它們。通過調(diào)用 GetComponent(“component name”)并存儲一個引用到結(jié)果中。當(dāng)你需要引用附加到該游戲物體上的其它腳本時這個方法是昀常用的。假設(shè)你在寫腳本 B并且你想做一個腳本 A的引用,而這兩者是附加在相同的游戲物體上的。你可以使用 GetComponent()來引用腳本。在腳本 B中你可以使用 scriptA = GetComponent(“ScriptA”); 然后你就能夠在腳本 B中通過 scriptA.variableName來訪問任何腳本 A中的變量。 3. 預(yù)設(shè)(Prefab) 預(yù)設(shè)是一個存儲在工程視圖中可重用的游戲物體。預(yù)設(shè)可以被插入到任意數(shù)量的場景中,并可多次出現(xiàn)在同一場景中。當(dāng)你添加一個預(yù)設(shè)到場景中,你就創(chuàng)建了一個它的實(shí)例。所有的預(yù)設(shè)實(shí)例都與原始的預(yù)設(shè)相關(guān)聯(lián)并且本質(zhì)上是它的一個克隆。不論在你的工程中存在多少實(shí)例,當(dāng)你對預(yù)設(shè)作了任何改變后你將看到這種改變被應(yīng)用到所有的實(shí)例上。不論你的預(yù)設(shè)是單一的一個游戲物體或者是一組游戲物體,在預(yù)設(shè)的變換層次中所作的任何改變都建碑應(yīng)用到它的實(shí)例上。創(chuàng)建預(yù)設(shè)為了創(chuàng)建預(yù)設(shè),你需要一個新的空預(yù)設(shè)。這個空預(yù)設(shè)不包含任何物體,并且你不能創(chuàng)建它的一個實(shí)例。將一個新的預(yù)設(shè)想象為一個空的容器,等待使用游戲物體數(shù)據(jù)來填充。一個新的空預(yù)設(shè),它不能被實(shí)例化,除非你使用游戲物體來填充它為了填充預(yù)設(shè),你需要使用在場景中已經(jīng)創(chuàng)建的游戲物體。下面是精確的步驟: 在工程視圖中,選擇一個你要放置預(yù)設(shè)的文件夾 從主菜單中選擇 Assets-Create-Prefab,或者從工程視圖的上下文菜單中選擇 Create-Prefab 命名該預(yù)設(shè) 在層次視圖(Hierarchy view)中,選擇你要放入預(yù)設(shè)的游戲物體 將它們從層次使用中拖放到工程視圖中在你執(zhí)行了上述步驟后,游戲物體和它的子物體都將被拷貝到預(yù)設(shè)中。現(xiàn)在,預(yù)設(shè)可以在多個實(shí)例中被重用。在層次中的原始物體現(xiàn)在已經(jīng)成了該預(yù)設(shè)的一個實(shí)例。創(chuàng)建更多預(yù)設(shè)的實(shí)例是非常簡單的。實(shí)例化預(yù)設(shè)為了在當(dāng)前場景中創(chuàng)建一個預(yù)設(shè)的實(shí)例,從工程視圖中拖動預(yù)設(shè)到場景(Scene)或?qū)哟我晥D中。這將從預(yù)設(shè)中拷貝所有父物體和所有的子物體。這些游戲物體被連接到(linked)預(yù)設(shè),在工程視圖中將使用藍(lán)色的文本來顯示它們。其中三個物體是預(yù)設(shè)的實(shí)例繼承繼承意味著當(dāng)預(yù)設(shè)改變時,這些改變也將被應(yīng)用到所有與之相連的物體上。例如,如果你添加一個腳本到一個預(yù)設(shè),那么所有該預(yù)設(shè)的實(shí)例都將包含該腳本。然而你也可以修改單個實(shí)例的屬性而不會破壞與預(yù)設(shè)的聯(lián)系。一個鏈接物體檢視面板(Inspector)中的所有公有屬性都有一個復(fù)選框。這個復(fù)選框是一個重載標(biāo)記(override flag)。如果該屬性的重載標(biāo)記被啟用,表示該屬性將不會受到預(yù)設(shè)改變的影響。簡單來說,這允許你修改實(shí)例物體并使得它們不同于它們的預(yù)設(shè),而且又不會破壞它與預(yù)設(shè)之間的聯(lián)系。一個實(shí)例物體和非繼承一個實(shí)例物體和非繼承 當(dāng)你在檢視面板中修改一個屬性的時候,該屬性的重載標(biāo)記會自動啟用。任何對已有屬性的改變都不會打斷與預(yù)設(shè)的聯(lián)系。然而有一些改動將斷開它,下面是保持預(yù)設(shè)連接的基本規(guī)則: 不能添加一個新的組件到一個實(shí)例上 不能從一個實(shí)例上移除一個組件 不能使用其他游戲物體作為實(shí)例的子物體如果你這樣做,你將看到一個警告消息出現(xiàn)并要求你確認(rèn)。當(dāng)一個實(shí)例與預(yù)設(shè)斷開后,對預(yù)設(shè)的修改將不會影響到這個游戲物體。如果你特意或是意外地?cái)嚅_了實(shí)例的連接,你可以應(yīng)用你的改變到預(yù)設(shè)并重新建立該連接。這將使得預(yù)設(shè)和所有的實(shí)例都發(fā)生改變。應(yīng)用改變創(chuàng)建或編輯一個復(fù)雜預(yù)設(shè)的時候,你可以非常容易的在場景中實(shí)例化它們,編輯實(shí)例,并應(yīng)用改變到預(yù)設(shè)。這種工作方式將允許你在場景視圖中查看并修改預(yù)設(shè)。一旦你修改完成,選擇該實(shí)例物體的根并從菜單中選擇 GameObject-Apply changes to Prefab。所有的改變都被拷貝到預(yù)設(shè)中,并應(yīng)用到每個場景中所有的實(shí)例上。將物體連接到預(yù)設(shè)可以將預(yù)設(shè)應(yīng)用于現(xiàn)有的沒有連接的物體上。這將添加所有該物體沒有的組件到物體上并將其連接到預(yù)設(shè)。在某些場合這是非常有用的。為了連接任何已有的物體到到預(yù)設(shè),按住 Option并將預(yù)設(shè)從工程視圖中拖放到層次視圖的物體上。這個游戲物體將成為該預(yù)設(shè)的一個實(shí)例。這個操作不會改變預(yù)設(shè)本身,但是會在你剛連接的物體上添加或移除一些組件和子游戲物體。導(dǎo)入預(yù)設(shè)當(dāng)你放置了一個網(wǎng)格資源到你的資源文件夾中時,Unity將自動導(dǎo)入該文件并生成一些看起來與預(yù)設(shè)相似東西。但它們并不是預(yù)設(shè),這只是簡單的資源文件。注意資源文件圖標(biāo)與預(yù)設(shè)圖標(biāo)是有點(diǎn)不同的這個資源在場景中作為一個游戲物體被初始化??梢栽谠撚螒蛭矬w上添加或移除組件。然而你不能將任何改變應(yīng)用到資源自身上因?yàn)檫@需要添加一些數(shù)據(jù)到該資源物體上!如果要創(chuàng)建需要重用的物體,你應(yīng)該將資源實(shí)例作為預(yù)設(shè)。當(dāng)你已經(jīng)創(chuàng)建了一個資源實(shí)例,可以創(chuàng)建一個新的空預(yù)設(shè)并拖動游戲物體到該預(yù)設(shè)上?,F(xiàn)在你擁有了一個連接到該物體的標(biāo)準(zhǔn)預(yù)設(shè)。下面給出了一些詳細(xì)的步驟: 從工程視圖中拖動一個資源文件到場景或?qū)哟我晥D中。 修改該資源(例如,添加腳本,子物體,組件等等) 創(chuàng)建一個新的空預(yù)設(shè)。從菜單中選擇 Assets-Create-Prefab,或者從工程視圖的上下文菜單中選擇 Create-Prefab 從層次視圖中拖動該物體到預(yù)設(shè)上。 4. 燈光(Lights) 對于每一個場景燈光是非常重要的部分。網(wǎng)格和紋理定義了場景的形狀和外觀,而燈光定義了場景的顏色和氛圍。你很可能需要在每個場景中設(shè)置多個燈光。讓他們一起工作需要一點(diǎn)練習(xí)但是結(jié)果是非常驚人的。簡單的兩個燈光可以通過從菜單中選擇 GameObject-Create Other并將其添加到你的場景中。有三種類型的燈光。一旦添加了一個燈光你就可以像操作其他物體一樣操作它。此外你還可以通過選擇 Component-Rendering-Light為選中的物體添加一個燈光組件。在燈光的檢視面板中有許多不同的選項(xiàng)檢視面板中燈光的屬性通過簡單地改變燈光的顏色(Color),你可為場景添加完全不同的氣氛。明亮,太陽光黃昏,中度光詭異的夜光光照燈光將使你的游戲具有個性和情趣。使用燈光來照亮場景和物體以便創(chuàng)建一個完美的可視氛圍。燈光可以用來模擬太陽,燃燒的火光,閃光,炮火或者爆炸,下面給出幾個例子。燈光的檢視面板在 Unity中有三種不同類型的燈光: 點(diǎn)光源(Point lights)從一個位置向所有方向發(fā)射相同強(qiáng)度的光,就像燈泡一樣。 方向光(Directional lights)放置于無窮遠(yuǎn)處并影響場景中所有的物體,就像太陽一樣。 投射光(Spot lights)從一個點(diǎn)向一個方向發(fā)光,像一個車燈一樣照亮一個錐形的范圍。屬性 類型(Type):當(dāng)前光照物體的類型 方向(Directional):一個放置在無窮遠(yuǎn)的光源。它將影響場景中的所有物體并不會衰減。 點(diǎn)(Point):一個從它的位置向所有方向發(fā)光的光源,將影響位于它的范圍內(nèi)的所有物體。 投射(Spot):照亮一個錐形(Spot Angle)的范圍(Range),只有在這個區(qū)域中的物體才會受到它的影響。 顏色(Color):光線的顏色。 衰減(Attenuate):光照是否隨著距離而減弱?如果禁用,物體的亮度將在進(jìn)入或離開它的光照范圍時突變??梢杂脕碇谱饕恍┨厥獾男Ч?。如果是方向光這個參數(shù)將被忽略。范圍(Range):光線將從光源的中心發(fā)射多遠(yuǎn) 投射角(Spot Angle):如果是投射光,這個參數(shù)將決定圓錐的角度。 陰影(Shadows)(Pro only):將被該光源投射的陰影選項(xiàng) 類型(Type):Hard或 Soft陰影,Soft陰影更加的費(fèi)時。 分辨率(Resolution):陰影的細(xì)節(jié) 強(qiáng)度(Strength):陰影的濃度。取值在 0到 1之間 投影(Projectio):方向光陰影的投影類型 恒定偏移(Constane Bias):世界單元的陰影偏移 物體大小偏移 (Object Size Bias):依賴于投影大小的偏移。缺省的值為投影者大小的 1% Cookie:你可以為燈光附加一個紋理。該紋理的 alpha通道將被作為蒙版,以決定光照在不同位置的亮度。如果光源是一個投射或方向光,這個必須是 2D紋理。如果光源是點(diǎn)光源,就需要一個 Cubemap。 繪制光暈(Draw Halo):如果選擇了該選項(xiàng),一個球形的光暈將被繪制光暈的半徑等于范圍(Range). 閃光(Flare):可選的用于在光照位置上渲染的閃光 渲染模式(Render Mode):選擇光源是作為頂點(diǎn)光,像素光還是自動的渲染方式。詳細(xì)信息參考性能考慮部分。參數(shù)包括: 自動(Auto):渲染方法將在運(yùn)行時確定,依據(jù)附近光照的亮度和當(dāng)前的品質(zhì)設(shè)置 (Quality Settings)來確定 強(qiáng)制像素(Force Pixel):光照總是以每像素的品質(zhì)來渲染。只將其用于非常重要的效果(例如,玩家汽車的前燈)。 強(qiáng)制頂點(diǎn)(Force Vertex):光照總是以頂點(diǎn)光來渲染。 裁剪蒙版(Culling Mask):用于將一組物體從光照的影響中排除;參考層部分。細(xì)節(jié)在 Unity中有三種類型的光照,每一種都可以調(diào)整以適應(yīng)你的要求。你可以創(chuàng)建一個包含 alhpa通道的紋理并將它賦給光照的 Cookie變量。這個 Cookie將從光源處投影。Cookie的 alhpa蒙版乘以光照強(qiáng)度,在表面上創(chuàng)建亮的和暗的斑點(diǎn)。這是一種非常好的添加大量復(fù)雜效果的方法。 Unity中所有內(nèi)置的 shader都可以與任何光照類型無縫融合。然而頂點(diǎn)光(VertexLit)shader不能顯示 Cookie或陰影。在 Unity專業(yè)版中,所有的光照都可以隨意的投射陰影。通過從陰影(Shadows)屬性中選擇 Hard Shadows或者 Soft Shadows來完成它。參考陰影部分。點(diǎn)光源點(diǎn)光源從一個點(diǎn)向所有方向發(fā)光。這是昀普通的一種光照類型,典型的用于爆炸,燈泡,等等。它們在圖形處理器上花費(fèi)平均成本(盡管點(diǎn)光源陰影是昀花費(fèi)成本的) 點(diǎn)光源點(diǎn)光源可以具有 cookie-帶有 alpha通道的 Cubemap紋理。這個 Cubemap將在所有方向上投影。并且?guī)в?Cookie的點(diǎn)光源將不會隨著距離而衰減。帶有 Cookie的點(diǎn)光源投射光投影光只能在一個方向上照亮一個圓錐范圍內(nèi)。者可以完美的模擬手電筒,車前燈或者是光柱,在大多數(shù)顯卡上這是昀費(fèi)時的。投射光投射光也可以有一個 cookie,一個紋理投影到光的圓錐上。這可以用來創(chuàng)建透過窗口的光照。非常重要的是紋理的邊緣必須是黑色的,需要打開 Border Mipmaps選項(xiàng)并且環(huán)繞模式 (wrapping mode)被設(shè)置為 Clamp。參考紋理部分。帶有 Cookie的透射光方向光方向光通常用于室外場景的陽光和月光。光照將影響場景中物體的所有表面。在大多數(shù)顯卡上這是昀快的。方向光如果一個方向光具有一個 cookie,它將投影到光源 Z軸的中心。 Cookie的大小由 Spot Angle屬性控制。在檢視面板中設(shè)置 cookie紋理的纏繞模式 (wrapping mode)為重復(fù)(Repeat)。方向光投影一個云狀的 cookie Cookie是一個非常好的方法為室外場景添加一些細(xì)節(jié)。你甚至可以在場景的上方慢慢移動光源以模擬移動的云。性能考慮光照可以使用兩種方式來渲染:頂點(diǎn)(vertex)光和像素(pixel)光。頂點(diǎn)光僅僅在游戲模型的頂點(diǎn)上計(jì)算光照,并在模型的表面進(jìn)行插值。像素光將計(jì)算屏幕中每個像素,因此非常費(fèi)時。一些老的顯卡只支持頂點(diǎn)光。雖然像素渲染比較慢,但是它允許實(shí)現(xiàn)頂點(diǎn)光照不能實(shí)現(xiàn)的效果。凹凸貼圖, cookie和實(shí)時陰影只能用像素光。透射光形狀和頂點(diǎn)光高亮昀好使用像素模式。上訴三種類型的光使用頂點(diǎn)光模式時看起來如下:頂點(diǎn)光照模式的點(diǎn)光源頂點(diǎn)光照模式的透射光頂點(diǎn)光照模式的方向光光照對于場景的渲染速度具有很大的影響,因此必須在光照質(zhì)量和游戲速度之間進(jìn)行折中。因?yàn)橄袼毓獗软旤c(diǎn)光更加費(fèi)時,Unity只以像素質(zhì)量來渲染昀亮的光。實(shí)際的像素光數(shù)量可以在質(zhì)量設(shè)置(Quality Settings)中設(shè)置。你可以使用渲染模式(Render Mode)屬性顯示的控制使用頂點(diǎn)光照(Vertex)或是像素(pixel)光照。缺省情況下 Unity將基于有多少個物體被光照影響來自動使用光照模式。實(shí)際上使用像素光照是由不同場合確定的。具有高光的大物體將全部使用像素光(根據(jù)品質(zhì)設(shè)置)。如果玩家距離它們很遠(yuǎn),附近的光將使用頂點(diǎn)光。因此,昀好將大物體從小物體中分離出來。創(chuàng)建 Cookie參考教程部分的如何創(chuàng)建投影光照 Coolie部分提示 帶有 cookie的投影光在制作從窗口投射的光線是非常有用的。這種情況下,禁用衰減,并設(shè)置范圍為正好到達(dá)地面。 低強(qiáng)度的頂點(diǎn)光可以非常好的提供景深效果。 為了達(dá)到昀大性能,使用 VertexLit shader。這個 shader只能用于頂點(diǎn)光照,并在低端的顯卡上提供高吞吐量處理。 5. 相機(jī)(Cameras)相機(jī)是一個能夠捕獲并為玩家顯示世界的設(shè)備。通過設(shè)置和操縱相機(jī),你可以真實(shí)而獨(dú)特的顯示你的游戲。在一個場景中你可以有無限的相機(jī)。它們可以被設(shè)置為任意的渲染順序,任意的的渲染位置,或者特定的場景部分。Unity中可以擴(kuò)展的相機(jī)屬性 清除標(biāo)記(Clear Flags):決定場景的哪個部分需要清除。當(dāng)需要使用多個相機(jī)以顯示不同的游戲元素時這是非常有用的。 背景顏色(Background color):在所有的元素這之后的屏幕顏色,沒有天空盒 正規(guī)化視口矩形(Normalized View Port Rect):在屏幕坐標(biāo)系下使用四個值來確定相機(jī)的哪些部分將顯示在屏幕上。 Xmin:相機(jī)視開始繪制的開始水平坐標(biāo) Ymin:相機(jī)視開始繪制的開始垂直坐標(biāo) Xmax:相機(jī)視結(jié)束繪制的開始水平坐標(biāo) Ymax:相機(jī)視結(jié)束繪制的開始垂直坐標(biāo) 近裁剪面(Near Clip Plane):相對于相機(jī)昀近繪制點(diǎn) 遠(yuǎn)裁剪面(Far Clip Plane):相對于相機(jī)昀遠(yuǎn)的繪制點(diǎn) 視野(Field of view):沿著局部 Y軸的相機(jī)視角寬度 正視(Is ortho graphic):打開或關(guān)閉相機(jī)的景深效果 正交視大小(Orthographic size):在正交模式下的視口大小 深度(Depth):相機(jī)的繪制順序。具有較高深度的相機(jī)將繪制在較低深度相機(jī)的上面 裁剪蒙版(Culling Mask):包含或忽略物體層,可以在監(jiān)視面板中將一個物體賦給一個層 渲染目標(biāo)(Render Target)(Pro only):指示一個渲染紋理,相機(jī)視將輸出到該紋理上。使用這個參數(shù)將使得相機(jī)不會渲染到屏幕上。細(xì)節(jié)相機(jī)是將你的游戲顯示給玩家的必不可少的方法。它們可以被定制,腳本化或父子化以取得任何可以想象的效果。對于解謎游戲,你可以保持一個顯示全部視的靜態(tài)相機(jī)。對于一個 FPS游戲,你應(yīng)該將相機(jī)作為玩家角色的子物體,并將其放置在角色的視平面上。對于競賽游戲,你需要使得相機(jī)能夠跟隨玩家的交通工具。你可以創(chuàng)建多個相機(jī)并賦予它們不同的深度(Depth)。unity3d教程相機(jī)將從低深度想高深度繪制。換句話說,一個具有深度 2的相機(jī)將繪制在具有深度 1的相機(jī)之上。你可以調(diào)整正規(guī)化視口矩陣 (Normalized View Port Rectangle)屬性以調(diào)整相機(jī)視在屏幕上的大小和位置。這可以創(chuàng)建多個小視圖,例如導(dǎo)彈控制器,地圖視圖和后視鏡等等。清除標(biāo)志每個相機(jī)在渲染時都存儲了顏色和深度信息。屏幕上沒有繪制的部分將為空,并在缺省情況下顯示天空盒。當(dāng)你使用多個相機(jī)的時候,每一個都將緩存它的顏色和深度信息,并積累每一個相機(jī)的渲染數(shù)據(jù)。當(dāng)一個相機(jī)在你的屏幕上渲染它的視時,你可以設(shè)置 Clear Flags來清除不同的緩存數(shù)據(jù)集。這個可以通過選擇如下的四個選項(xiàng)之一來完成:天空盒(Skybox) 這是一個缺省的設(shè)置。屏幕上任何空的部分都將顯示當(dāng)前相機(jī)的天空盒。如果當(dāng)前相機(jī)沒有設(shè)置天空盒,它將缺省使用在渲染設(shè)置 (Rendering Settings)中的天空盒。然后將使用背景顏色。單色(Solid Color) 任何空的部分都將顯示當(dāng)前相機(jī)的背景色(Background Color)。僅深度(Depth only) 如果你想繪制一個玩家的槍并且在處于環(huán)境內(nèi)部時不需要裁剪它,你可以設(shè)置一個深度為 0的相機(jī)來繪制場景,另一個深度為 1的相機(jī)來單獨(dú)繪制武器。武器相機(jī)的 Clear Flags應(yīng)該被設(shè)置為僅深度。這將保持場景顯示在屏幕上,但是會丟棄所有不存在 3D空間的所有信息。當(dāng)武器被繪制時,不透明部
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度民間借貸論文跨文化比較與研究合同
- 2025-2030年圖書館靜音管理機(jī)器人企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年呼吸系統(tǒng)疾病治療儀行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年戶外輕食凍干意面企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年發(fā)光卡牌夜間對戰(zhàn)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年投影儀鏡頭清潔套裝行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 二零二五年度門店知識產(chǎn)權(quán)保護(hù)合作協(xié)議
- 批發(fā)行業(yè)互聯(lián)網(wǎng)+的商業(yè)模式創(chuàng)新考核試卷
- 2025-2030年廚電產(chǎn)品AR展示企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年咖啡專用保溫壺企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 高中體育與健康-足球-腳內(nèi)側(cè)傳球射門技術(shù)(第二課時)教學(xué)課件設(shè)計(jì)
- 2023年新改版教科版科學(xué)三年級下冊活動手冊參考答案(word可編輯)
- 《淄博張店區(qū)停車問題治理現(xiàn)狀及優(yōu)化對策分析【開題報告+正文】15000字 》
- 常用電子元器件基礎(chǔ)知識演示
- GB/T 32918.4-2016信息安全技術(shù)SM2橢圓曲線公鑰密碼算法第4部分:公鑰加密算法
- 2023年藥事法規(guī)教學(xué)案例庫及案例分析
- 北京市水務(wù)安全生產(chǎn)風(fēng)險評估指南
- 吸引器教學(xué)講解課件
- 醫(yī)學(xué)心理學(xué)人衛(wèi)八版66張課件
- 仿古建筑施工常見質(zhì)量通病及防治措施
- 普通沖床設(shè)備日常點(diǎn)檢標(biāo)準(zhǔn)作業(yè)指導(dǎo)書
評論
0/150
提交評論