Unity3D基礎(chǔ)知識梳理
這段時間在做Unity的項目,這差不多是我的第一次實戰(zhàn)啊~然后公司來了實習(xí)的童鞋要學(xué)Unity,但是我一向不靠譜啊,所以只能幫他們稍微梳理下基礎(chǔ)的東西了啊,唉~學(xué)長只能幫你們到這里了~順便就把自己這兩天整理的一些基礎(chǔ)知識分享上來了,閑話不多說~
美術(shù)部分:
Unity的話主要還是分兩塊吧,第一塊是美術(shù)(自己都不懂~這里允許我稍微帶過一下吧~),美術(shù)的話主要包括3d模型、材質(zhì)、紋理(貼圖)這幾部分吧,當(dāng)然你也可以說還有shader(著色器),Unity本身擁有幾十種shader,也可以根據(jù)自己的需要使用shaderLab語言來編寫shader,這個對我來說相當(dāng)有難度,所以一般只用Unity自帶的和網(wǎng)上“流傳”的。
接下來是程序方面的:
基本組成:
Scene場景,類似于Flash中的stage,用于放置各種對象。
GameObject,可以攜帶各種Component(每個GameObject至少帶有Transform組件,所有的組件都可以從頂部菜單Component里面找到并添加給游戲?qū)ο螅?/p>
Component組件,附加在GameObject上,不同的組件可以使GameObject具有不同的屬性,Transform、碰撞器、剛體、渲染器等都是組件,腳本也是組件的一種,對象所表現(xiàn)出來的行為都是由組件實現(xiàn)的。
腳本語言:
C#、Javascript、boo(前兩者使用較為廣泛,網(wǎng)上教程以前兩者為主,個人推薦c#),一般的繼承MonoBehaviour類的腳本都需要依附的場景中的對象上才能被執(zhí)行。
用戶圖形界面部分(GUI):
- 用于制作按鈕、文本顯示、滾動條、下拉框等常用圖形操作界面元素,使用GUISkin和GUIStyle可以自定義樣式)
- 系統(tǒng)自帶GUI
- 各類GUI插件,NGUI、EZGUI等。
預(yù)制:
- 用于程序運行時,動態(tài)實例化對象的“母體”,比如,在射擊類游戲中,子彈的生成就可以使用實例化預(yù)制的方式來實現(xiàn),這就好比是Flash中的各種Display類,你可以定義它的各種屬性方法,然后在使用的時候直接實例化一個實例。
- 在project面板右擊選擇Creat——Prefab新建一個預(yù)制,將Hierarchy面板中要制成預(yù)制的對象拖到這個新建預(yù)制上即可。
標(biāo)簽和層:
- 標(biāo)簽(tag)用于辨別物體,與name類似,使用對象的tag和name都可以找到對應(yīng)的物體 (GameObject.Find(“Name”)、 GameObject.FindWitnTag(“Tag”))。默認是Untagged,可以通過Inspector面板里面Tag的下拉菜單選擇 Add Tag項來添加新的標(biāo)簽, 在tagmanager中點開Tags左側(cè)的小三角通過size來增加標(biāo)簽的數(shù)量,每個Element內(nèi)都填入新標(biāo)簽的名字
- 層(layer),在使用某些功能的時候,可以通過層來過濾不 需要運用該功能的對象,也就是把該功能運用到特定的層,比如,相機的Culling Mask屬性,通過選擇特定層可以實現(xiàn)只顯示位于被選中的層的對象。層的添加也是在標(biāo)簽管理器中,Unity已經(jīng)設(shè)置了8個層,你是不能對這8個層進行修 改的,你可以從第9個(也就是user layer8)開始添加你定義的層。
資源:
- .unitypackage格式的文件可以直接import到unity中,記住最好是在打開unity的情況下,在project面板 里右擊,然后在import packages中選中你要導(dǎo)入的資源。注:Unity不識別中文路徑,因此要導(dǎo)入的資源千萬不要放在中文目錄下!!!還有你的工程也不要新建在中文目錄 下!!!(你新建工程的時候選擇中文路徑的話,也建不起來~)
- 也可以把你的場景打包,導(dǎo)出.unitypackage資源包,然后可以在其他項目中導(dǎo)入使用。(在project面板里右擊, export package)
- 另外,利用工程面板(project)右鍵菜單中的import new assets可以導(dǎo)入其他形式的資源,如,模型、音頻、視頻等,當(dāng)然也可以直接將外部文件夾中的資源拖到project中的方式完成導(dǎo)入。
物理引擎:
unity使用NVIDIA PhysX物理引擎
- 碰撞器:各種基本體的碰撞器(box、sphere、capsule、cylinder),網(wǎng)格碰撞器(mesh collider)、車輪碰撞器(Wheel collider)、地形碰撞器(terrain collider)——碰撞器組件在你選中對象的時候會以綠色線框顯示。
- 碰撞檢測:碰撞器碰撞檢測、光線投射(射線)、觸發(fā)器碰撞檢 測,通過碰撞檢測可以得到與當(dāng)前對象發(fā)生碰撞的對象信息,使用碰撞的相關(guān)函數(shù)OnCollisionEnter(碰撞器碰撞檢測)、 OnTriggerEnter(觸發(fā)器碰撞檢測)、Physics.Raycast(光線投射)獲取。
- 剛體:模擬物體物理現(xiàn)象的基礎(chǔ),加了剛體組件才能模擬重力、阻力等。
- 力:作用于剛體,你只要通過添加各種力,就可以使剛體表現(xiàn)出跟現(xiàn)實中一樣的受力情況。
粒子系統(tǒng):
兩種形式,一種以物體攜帶粒子系統(tǒng)組件的形式實現(xiàn),另一種是直接使用粒子系統(tǒng)GameObject(3.5以后)
- 粒子系統(tǒng)GameObject:GameObject——Creat other——Particle system
- 粒 子系統(tǒng)組件:粒子發(fā)射器(ParticleEmitter,有Ellipsoid Particle Emitter和Mesh Particle Emitter兩種類型的粒子發(fā)射器,主要有粒子產(chǎn)生、數(shù)量、速度、大小、存活時間等參數(shù)設(shè)置)、粒子動畫器(Particle Animator,主要負責(zé)粒子產(chǎn)生后直至粒子消亡的行為變化的控制,包括運動過程中的旋轉(zhuǎn)、受力等)、粒子渲染器(Particle Renderer,主要是負責(zé)給予粒子的渲染,陰影、材質(zhì)等設(shè)定)
抽空可以用粒子組件調(diào)一個火焰效果,把所設(shè)置的參數(shù)值分享給大家~
粒子系統(tǒng)組件參數(shù)淺析+火焰粒子demo(http://bbs.9ria.com/forum.php?mo ... 1&extra=#pid1577455)
相機(camera):
- 相機視角:透視(可以調(diào)整透視角度)、正交(沒有透視效果)
- Skybox:只在Game窗口可見,需要skybox類型的shader,以及附在其上的六面貼圖紋理。
- 第 一人稱視角:角色不出現(xiàn)在視野中,相機看到的就像角色雙眼看到的一樣,如,常見的FPS射擊類游戲。第三人稱視角:能在視野中看到角色,相機一直跟隨者角 色運動。(可以導(dǎo)入Unity自帶的CharacterControllers資源包,里面有第一人稱和第三人稱的原型)
光照系統(tǒng):
創(chuàng)建燈光GameObject——creat other
- 常用燈光類型:平行光(Directional light,無衰減,模擬太陽光)、聚光燈(spotlight,從一點向某一方向發(fā)射錐形光束,有衰減,聚光效果)、點光源(Pointlight,從一點向外輻射,有衰減)
- 烘焙:將靜態(tài)光影效果渲染到紋理上,減少燈光和陰影帶來的開銷(free版的Unity不支持陰影,因此烘焙是free版實現(xiàn)陰影的方式)。
- 陰 影:只有pro版才支持,分為hard shadows和soft shadows兩種,前一種陰影比較重,后一種相對柔和。但是默認情況下,你會發(fā)現(xiàn)只要directional light類型的燈光才可以使用陰影,別急,咱們來改一個設(shè)置,讓其他兩種燈光也能使用陰影,打開edit-project settings-player,然后將rendering path改為deferredlighting(延遲光照),這下你的電光源和聚光燈也能產(chǎn)生陰影了~(要產(chǎn)生陰影,還需要將投射陰影的對象的Cast shadows(投射陰影)勾選,將接受陰影的對象的Receive shadows(接受陰影)勾選, 舉個例子,你要讓樹在地面上產(chǎn)生陰影,那就得讓樹投射陰影,然后讓地面接受陰影才行)。
地形系統(tǒng):
選擇頂部菜單Terrain——creat terrain創(chuàng)建一個地形。
地形有一組地形工具用來繪制地形的高度、生成各種地貌,并且可以對地表運用紋理,還可以添加樹、草等地表植被。當(dāng)然在使用紋理繪制地形以及添加地表植被之前 需要導(dǎo)入相關(guān)的紋理資源和植被資源,另外還可以導(dǎo)入unity自帶的水的資源包,使用它里面的水面來模擬地形中的湖泊、河流等。
發(fā)布:
- 關(guān)于Player settings播放器設(shè)置的話這里暫且不多說,發(fā)布的時候通過player setting進行發(fā)布設(shè)置,每個平臺都有對應(yīng)的設(shè)置參數(shù),根據(jù)需要來設(shè)置,主要是關(guān)于程序圖標(biāo)、分辨率、渲染等設(shè)置,大家可以自己試試(有些參數(shù)只有pro版才能設(shè)置)。
- 下 面我們來看看build settings對話框,左側(cè)是可發(fā)布的平臺(Unity跨平臺性很強大,4.0已支持發(fā)布至10種平臺:IOS、Andriod、Windows、 Mac、Linux、Webplayer、Flash、PS3、Xbox360、Wii u),右側(cè)是對應(yīng)平臺的發(fā)布設(shè)置,一般初學(xué)的話,只要會發(fā)布單機版的和webplayer的就差不多了,這兩個的話,右側(cè)的發(fā)布選項按照默認的設(shè)置就可 以,當(dāng)然單機版要在Target Platform中選擇對應(yīng)的操作系統(tǒng),webplayer的話這里我給大家介紹前兩個參數(shù),Streamed顧名思義就是在網(wǎng)絡(luò)上下載的時候以流的形 式,Offline Deployment,這個是可以在離線(斷網(wǎng))狀態(tài)下本地運行你的webplayer程序(這里需要注意的是,默認情況下你每次打開webplayer 程序的時候,瀏覽器都會自動去訪問官網(wǎng)更新webplayer插件,如果你沒勾選這個選項而又在沒有聯(lián)網(wǎng)的狀態(tài)下運行webplayer的話是無法運行 的)
學(xué)習(xí)平臺:
最后提供些學(xué)習(xí)平臺
- http://unity3d.com/官網(wǎng)、http://china.unity3d.com/中文官網(wǎng)
- http://unity3d.9ria.com/天地會Unity頻道
- http://bbs.9ria.com/forum-73-1.html天地會Unity3D版
- http://game.ceeger.com/forum/index.php 圣典