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