分類:Unity、C#、VS2015 算法
建立日期:2016-04-05 網絡
組件(Component)在Unity遊戲開發工做中很是重要,能夠說是實現一切功能所必需的。 工具
一、遊戲對象(Game Object) 字體
遊戲對象(Game Object)包括空物體、基本幾何體、外部導入的模型、攝像機、GUI、粒子、燈光、樹木等各種元素。 動畫
凡是出如今層次視圖中的元素都是遊戲對象。 設計
二、組件(Component) 3d
組件是在遊戲對象(Game Object)中的實現某些功能的集合。不管是模型、GUI、燈光仍是攝像機,全部遊戲對象本質上都是一個空對象掛載了不一樣類別的組件,從而讓該遊戲對象擁有不一樣的功能。 代理
對於一個空遊戲對象來講,若是爲其添加一個攝像機組件,那麼該對象就是一架攝像機;若是爲其添加了網格過濾(Mesh Filter)組件,那麼該對象就是一個模型;若是爲其添加了燈光組件,該對象就是一盞燈光。 orm
腳本在Unity中也是一種組件。 對象
三、場景(Scene)
場景是包含組件的各類遊戲對象的集合。
若是新建一個Unity工程,那麼該工程會自動創景一個場景。
若是是遊戲,那麼可將一個場景看做是一個關卡。
你也能夠經過菜單建立新場景:
同一個工程中可包含多個場景。
將組件添加到遊戲對象中基本設計步驟(示例)以下:
運行Unity,新建一個名爲ch04Demos的工程,而後按下面的步驟操做便可。
一、添加文件夾
在工程視圖中,建立一個Demo01文件夾。
二、添加空對象
向場景中添加一個空遊戲對象(Create Empty)。
選中該遊戲對象,能夠發現該對象會自動擁有一個Transform(幾何變換)組件。
全部遊戲對象都必須有這個組件。
三、添加組件
先在層次視圖中選擇某個遊戲對象,而後經過如下兩種方式之一爲該對象添加其餘組件:
方式1:經過菜單的Component將其餘組件添加到該遊戲對象中。
方式2:經過檢視器中的【Add Component】按鈕添加其餘組件。
這兩種方式操做的結果徹底相同。
四、保存場景
按<Ctrl>+S保存場景。
首次保存場景時,會讓你輸入場景名稱以及保存的位置。這裏將其保存到Demo01文件夾下(文件名:Demo01.unity):
在 Unity 5.3.4 中,可添加的組件分爲如下類型:
一、Mesh
網格。該類型的組件有:
(1)Mesh Filter
網格過濾器。該組件用於在工程資源中獲取網格(Mesh),而後將真傳遞到所屬的遊戲對象中。若是獲取的網格擁有蒙皮信息,Unity還會爲該網格自動建立一個Skinned Mesh Renderer組件。
添加Mesh Filter組件後,還須要爲該遊戲對象添加一個Mesh Renderer (網格渲染器)組件,不然網格雖然實際存在於遊戲對象中,但沒法在場景中被渲染出來。
(2)Text Mesh
文字渲染器。該組件用於生成三維的字符串(文字)。
(3)Mesh Renderer
網格渲染器。該組件用於從網格過濾器中得到網格模型,在根據遊戲對象的Transform組件中定義的位置,在場景視圖中將其渲染出來。
二、Effects
特效。該類型的組件有:
(1)Particle system
粒子系統效果。該組件用於創做煙霧、氣流、火焰、瀑布、噴泉、漣漪等效果。粒子系統的功能很是強大,後面還會專門用一章來介紹它。
(2)Trail Renderer
拖尾軌跡渲染效果。該組件用於渲染遊戲對象的運動軌跡,即場景中的物體在運動狀態下產生的軌跡、拖尾等效果。
(3)Line Renderer
線條渲染效果。該組件用於渲染3D空間中2個或更多點之間的連線。此連線支持定義寬度並能夠被賦予材質貼圖。其渲染算法與Trail Renderer組件相同。若是須要渲染出兩條或更多的線,就須要使用多個遊戲對象(Came0勻ect)並添加該組件。
若是須要渲染出兩條或更多的線,須要使用多個遊戲對象並添加該組件。
(4)Lens Flare
鏡頭光暈效果。該組件用於模擬真實攝像機鏡頭的光線折射效果。能夠用來表現攝像機對準強烈光源(如日光)的效果,進而提升場景的真實性、趣昧性。
(5)Halo
光環(光暈)效果。該組件用於渲染遊戲對象周圍的光線區域,—股用於光源對象或自發光物體上,表現出光暈以及空氣中細小的灰塵顆粒的效果。
(6)Projector
幻燈片投射效果。該組件用於將材質紋理投射到任意與其視錐相交的場景中的遊戲對象上。注意,該組件所用的材質必須使用Projector類型的Shader(着色器)才能正常工做。該類型的Shader能夠經過導入Unity自帶的Projector資源包來得到。
(7)Legacy Particles
舊版粒子系統。該組件用於創做煙霧、氣流、火焰、瀑布、噴泉、漣漪等效果。關於該類型組件的相關知識後續章節中再詳細介紹。
三、Physics
物理組件。該類型的組件有:
Unity擁有內置的NVIDIA PhysX物理引擎,能夠模擬真實的物理行爲。該類型組件很是重要,後面還會專門用一章來介紹它。
四、Navigation
導航尋路。該類型的組件有:
(1)Nav Mesh Agent
導航網格代理。該組件用於尋路,是存放導航網格(NavMesh)中代理導航信息的地方。
(2)Off Mesh Link
斷開網格連接。若是場景中存在靜態網格模型斷開的狀況,此時就沒法從場景的一部分導航/移動到徹底分離的另外的部分。這種狀況下,可使用該組件將分離的網格進行設置,進而解決此類問題。
(3)Nav Mesh Obstacle
導航網格障礙物。—股來講,Unity的導航系統中對於位置固定的障礙物,能夠經過烘焙進行計算。若是場景中有動態的障礙物,須要該組件來進行設置。
五、Audio
音頻。該類型的組件有:
(1)Audio Listener
音頻偵聽器。該組件用於接收場景中輸入的聲源,並經過硬件設備的揚聲器進行播放。在Unity中添加的攝像機對象默認不帶該組件。對於大多數應用程序,常常會把偵聽器貼在主攝像頭(Main Camera)上。若是一個音頻偵聽器在混晌區(Audio Reverb Zone)內,混晌會自動應用到在場景中全部能聽到的聲音(僅Pro版支持此功能)。此外,若是將音頻效果應用到偵昕器,它將被應用到場景中的全部聽得見的聲音。
(2)Audio Source
聲源。該組件用於播放場景中的音頻剪輯。若是音頻剪輯是一個3D聲源,則會根據距離產生衰減效果。若是偵聽器是在1個或多個混晌區中,混晌效果會應用到聲源。
(3)Audio Reverb Zones
混響區。該組件用於獲取音頻剪輯,並根據音頻偵聽器所在的混晌區進行失真處理。通常用於從不受環境影響的地點移動到受環境影響較大的地點。
六、Rendering
渲染。該類型的組件有:
(1)Camera
攝像機。該組件用於向玩家顯示遊戲世界的一切,相似人類的眼睛,它是Unity中是最要的組件之一。新建一個遊戲場景時,Unity會在場景中默認添加一個攝像機(即:帶有攝像機組件的遊戲對象)。在同一個遊戲場景中,攝像機的數量不受限制。
(2)Skybox
天空盒。該組件用於攝像機對象,可理解爲包圍在遊戲場景以外的巨大的立方體。用於模擬天空的效果。關於天空盒組件請參考本章第10節的相關內容。
(3)Flare Layer
耀斑/光暈層。該組件用於攝像機對象,模擬鏡頭光暈的效果。在Unity中添加的攝像機對象會默認攜帶該組件。
(4)GUI Layer
用戶界面層。該組件用於攝像機對象,可使二維圖形用戶界面在遊戲運行狀態下渲染出來。在Unity中添加的攝像機對象會缺省攜帶該組件。
(5)Light
燈光。該組件用於照亮場景、對象。在Unity中添加的燈光對象會缺省攜帶該組件。經過燈光組件能夠模擬太陽、燃燒的火柴、手電筒、槍火光以及爆炸等效。
(6)Light Probe Croup
動態光探頭/燈光探測器。該組件用於添加一個或多個動態光探頭/燈光探測器到遊戲場景中。經過該組件能夠爲移動物體實時計算光照貼圖。
(7)Reflection Probe
遮擋探頭。
(8)Occlusion Area
遮擋區域(只有Pro版支持此功能)。該組件用於在運動的遊戲對象上應用遮擋剔除功能,建立一個遮擋區域後修改其大小來適應運動物體的活動空間。
(9)Occlusion Portal
遮擋入口。該組件用於建立初始的閉塞功能,並能夠對閉塞功能進行實時的開啓、關閉控制。
(10)LOD Group
細節級別組。該組件用於管理LOD(細節級別)。能夠方便地以可視化的方式爲遊戲對象指定相應的細節級別。
(11)Sprite Renderer
二維精靈渲染。
(12)Canvas Renderer
畫布渲染。
(13)GUI Texture
用戶界面紋理。該組件用於渲染用戶界面所用的二維平面圖像。例如按鈕、界面背景等。在Unity中添加的GUI Texture對象會缺省攜帶該組件。該組件的定位、縮放經過修改屏幕座標的X、Y值完成。
(注意Unity GUI腳本比GUI Texture功能更強大,後面的章節還會專門介紹Unity GUI)
(14)GUI Text
用戶界面文本。該組件用於在屏幕座標中顯示所導入的任何字體的文本。在Unity中添加的GUI Text對象會默認攜帶該組件。該組件的定位、縮放依據屏幕座標經過修改X、Y軸來完成。
(注意Unity GUI腳本比GUI Texture功能更強大,後面的章節還會專門介紹Unity GUI)
七、Layout
分層。該類型的組件有:
八、Miscellaneous
綜合。該類型的組件有:
(1)Animator
動畫生成器。該組件用來設置角色的行爲。包括對狀態機、動畫混合樹以及在腳本中控制的事件。只要包含Avatar的遊戲對象,就會包含該組件。
(2)Animation
動畫。該組件用來管理遊戲對象上的動畫文件。
(3)Network View
網絡視圖。該組件用於經過網絡來共享/傳輸數據。理解這個組件很是重要。經過網絡視圖能夠發起兩種類型的網絡通訊:狀態同步和遠程過程調用(Remote procedure call)。
(4)Wind Zone
風域。該組件用於生成風力並模擬遊戲對象受風力影響而產生的效果。
(5)Terrain
地形。
(6)Billboard Renderer
廣告牌渲染器。
本例子是將《Unity 4.x從入門到精通》的0403工程項目升級爲Unity 5.3.4,而後導出資源包,再導入到ch04Demos,並將全部資源拖放到Demo01文件夾後,再繼續修改實現的。
該項目包含不少資源,如音頻、字體庫、模型、材質、貼圖、shader以及腳本等。這些資源均可以在頂目中反覆應用於不一樣的場景。以下圖所示:
一、打開場景
雙擊0403打開該場景:
二、添加遊戲對象
在場景中添加一個空遊戲對象:
爲該遊戲對象添加一個網格過濾器:
在檢視器視圖中,單擊Mesh右邊的小圓圈圖標,在彈出的對話框中選擇一個網格模型,雙擊將其添加到該網格過濾器中。以下圖所示:
爲選中的空遊戲對象指定組件後,還須要爲其添加一個Mesh Renderer,該網格模型纔會在場景視圖中被渲染出來。
選擇要添加的遊戲對象,在檢視器視圖中單擊【Add Component】按鈕,選擇Mesh中的Mesh Renderer組件,將其添加到Mesh中。
此時,在場景視圖中,所選遊戲對象的網格模型已經被渲染出來,以下圖所示:
若是看不到這個遊戲對象,是由於該對象被真他網格模型遮擋或者在當前視野之外。這種狀況下,可經過移動快捷工具將其拖動到合適的位置,或者直接按<Ctrl>+<Alt>+F將其移動到當前視野的中心。
三、貼圖
遊戲對象的網格模型被渲染出來以後,接下來須要爲其指定材質貼圖。
(1)建立材質
鼠標右擊工程視圖中Assets下的Demo01,在彈出的列表中,選擇Material,爲該項目添加一個材質。
頂目中全部的資源儘可能根據相應的規範來命名,而且按類別放置在相應的文件夾內,這樣便於項目的管理。
首先爲建立的材質命名爲xiaoche,而後爲材質指定與以前在網格過濾器組件中指定的網格模型配套的紋理貼圖,最後將其拖放到Material文件夾內。
(2)爲材質貼圖
具體操做以下:
選中xiaoche,將Shader改成Diffuse,以下圖所示:
單擊【Select】按鈕,選擇爲該材質添加的紋理,以下圖所示:
這就獲得了一個帶有貼圖的材質:
將該材質拖放到Material文件夾下。
(3)爲遊戲對象貼圖
選擇層次視圖中前面添加的遊戲對象,在檢視器視圖中單擊Mesh Renderer組件面板中的Material下的【Element 0】右側的小圓圈圖標,在選擇材質對話框中選擇剛建立的材質:
此時,在場景中就能夠看到爲該遊戲對象添加組件後的效果了:
另外,可看出新添加的遊戲對象的渲染結果和從其餘資源中導入模型資源後的效果類似。
四、照亮剛添加的遊戲對象
完成了遊戲對象的網格類組件設置以後,還能夠根據須要添加燈光,以便照亮這個遊戲對象,讓該對象的周圍顯得更明亮。
(1)添加光源
選擇該遊戲對象,單擊檢視器中的【Add Component】按鈕,而後選擇【Rendering】下的【Light】,爲其添加一個光源組件:
此時該遊戲對象就擁有了光源的屬性,並增長了燈光圖標,該燈光還能夠照亮場景中其餘的遊戲對象。以下圖所示:
(2)調整光源參數
另外,還能夠根據須要在檢視器視圖中調節Light組件中Color(顏色)及Intensity (強度)等參數,以便讓遊戲對象的照明效果更具個性:
OK,添加組件的介紹就到這了。