切換
舊版
前往
大廳
主題

資策會Unity課程「Untiy入門」Day2

冰劍士-冰雪飛 | 2014-10-03 22:06:20 | 巴幣 24 | 人氣 2059

此篇文章為10/02的課程,一樣是Unity入門

今次稍微進入點C#的概念(雖然往後有C#專門課程)和一些Component的細部

同樣的我沒辦法講得太完全,盡可能用我所認知的方式來說明複習
========================================================================
對於遊戲的製作階段,大致上的簡易流程是這樣的

企劃發想   規劃      研發     製作      測試     發售
|----------------------|----------------------|----------------------|----------------------|---------------------->
遊戲製作的階段中,很可能因為不可預測的因素,導致進度的落後和中斷開發

就像近期的新聞,Blizzard中止了他開發7年的遊戲

原因不追究,但遊戲製作上盡可能要求穩定開發,不然只會消耗精力和時間
========================================================================

這次我們來看Camera內建的Component功能,我把我知道的部分講講看

Clear Flags這關係到遊戲內程式更新畫面的方式,一般來講不太會動到它
但裡面的兩個Depth onlyDon't Clear的差別在於3D的部分
Depth only不清除大部分但會去理會深度(Z軸),而Don't Clear則是完全清除

Background是用於攝影機的背景畫面

Culling Mask內有打勾的是要攝影機顯示的Layer

Projecttion應該是投影方式,通常3D用Perspective,2D用Orthographic

概念大概像這樣,左圖是3D用,看遠則物小、看近則物大,而2D不管深度所以都是一樣大小
而後你選擇Perspective下面會出現Feild of View,Orthographic則出現Size
應該都是關於攝影機的投影大小有關

Clipping Planes好像是距離遠於和近於多少後關閉GameObject,以便節省效能

Viewport Rect是攝影機的位置比列大小的樣子X Y為座標點、W H為寬高比

Occlusion Culling則是關閉沒有拍攝到的GameObject,以便節省效能

Audio Listener這個Component就像是耳朵一樣用於接收音訊
但假如你是3D遊戲,角色要判斷聲音遠近可以把這掛在你的角色GameObject裡
========================================================================

再來我們來看看圖片匯入的部分,我們以洛克人EXE的2D素材圖為樣本

Texture Type是圖片的型態,而我們使用的是一般2D圖片就選擇Sprite (2D\uGUI)既可

Filter Mode會影響圖片的品質,最低階是Point,放越大圖片越能看出點陣圖

最下面的幾個選項是關於各平台對於圖片的壓縮品質,關於這邊就不多說了
通常第一個調整好後面的通通會照著你調的去做

Sprite Mode關係到這圖片是否是單一還是多張的形式
假如像一般單張掛在牆上的圖畫,就選擇單一的Single
但如果像範例圖中是個連續動作圖,就要用Multiple,而後要用Unity3D內建的切割系統來裁切
當你選擇Mutiple後請按下面的Sprite Editor,此時會跳出畫面讓你切割

圖片的收看大小個以用滑鼠滾輪來調整,先注意看左上角的Slice,按下去後會跑出像畫面上的小介面
Type切割的類型,Automatic是自動對應大小,Grid則是固定方格(可以調整)
Pivot切割後各圖片的中心調整,可以藉有此簡單調整中心點的概略位置
Method這我就真的不太清楚了......,通常我用不到就是了
弄好用按下面的Slice就會把圖片切好,之後再按右上的Apply就可以把多張匯入Assets內使用
========================================================================
class A{ } 類別A
class B:A{ } B子類別對應到A父類別
這是C#對於類別上的繼承寫法

static void xxx(){ }
靜態函式

enum QQQ{A,B,C};
列舉
========================================================================
Unity內部的MonoBehaviour類別

Awake()和Start()差別,雖然兩者都是事先讀入初始值
但先後順序有差別,先是把任何腳本內的Awake()先全部讀好,再去讀取Start()
假如有一個腳本要讀取其他腳本的初始值,會先讓Awake()全部都準備好,之後再用Start()去讀取其他初始值

FixUpdate()和Update()都是更新畫面用的函式
不過FixUpdate()不管程式內的FPs值得更新次數多大,它就只更新幾次(可以調整)
通常用不太到這個,不過對於精密計算的部分會比較需要

Collision(非穿越) Trigger(穿越)
OnCollisionEnter
OnCollisionEnter2D
碰撞開始瞬間執行
OnTriggerEnter
OnTriggerEnter2D
穿越性碰撞開始瞬間執行
OnCollisionExit
OnCollisionExit2D
碰撞結束瞬間執行
OnTriggerExit
OnTriggerExit2D
穿越性碰撞結束瞬間執行
OnCollisionStay
OnCollisionStay2D
碰撞持續時執行
OnTriggerStay
OnTriggerStay2D
穿越性碰撞持續時執行
關於Collision系列的Component內可以勾選Is Trigger,這樣就可以變成穿越性碰撞判定

OnEnable()、OnDisable()當這GameObject啟動(前者)或關閉(後者)時執行

OnDestroy()此GameObject摧毀時執行

Destory();動態移除
DontDestroyOnLoad();切換場景時保留,常用於主角的地圖轉換等

Application.LoadLevel( "場景名稱" or 變數 );切換場景用
========================================================================
這次打了好大一篇,沒有明講的部分就抱歉了,本人還在摸索中

創作回應

更多創作