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