初心者培訓班 - Unity基本觀念

Unity基本功(6) – C# script架構

※中肯辭典

(註:有別於官方文件上的嚴謹說明,在此以工程師的角度來簡短說明此元素的特質與使用時機。)

了解Start()、Update()以及Awake()等架構的運作,有助於更輕鬆地實作遊戲設計理念。



前幾篇都著重在Component的使用或特定功能的運作,漏掉了最基本的一些介紹XD

螢幕快照 2017-07-06 下午11.51.46

這是一個新的Script會顯示的介面,第五行public class  後面接的就是這個檔案的名稱,有時候編譯出現錯誤就是來自事後修改了檔案名稱,但是這裡的名字沒有跟著改,請小心這一點!

接下來,不難注意到裡面只有Start()Update()兩個函式。

如同上方預設的註解所說的,Start()只會在遊戲剛按下”Play”時執行一次,而Update()會在遊戲的每一幀被執行。

遊戲的幀數(Frame per second, FPS)代表每秒鐘跑幾張畫面, 每秒60幀左右在遊戲裡是較為理想的狀況,在此暫不多談。

總之,可以把Update()理解為水流個不停的水龍頭

如果你設個變數counter,然後在Update()裡寫count = counter+1; 立刻就會發現counter以神奇的速度飆升個不停XD

因此,如果要在Update()裡做一些判定與偵測,一般會搭配bool布林運算元true、false性質來當作開關,限制住程式的行為。

例如:物件被小雞撞到的話,生命值-1。

螢幕快照 2017-07-07 上午1.24.33.png這樣寫就能讓物件時時刻刻都在偵測有沒有被撞到,並且在適當的時機扣血,符合邏輯上的需求!

其實在OnCollisionEnter2D扣HP就好了啦,這邊只是示範概念XD


除了Start()和Update()之外,還有一個常用的Unity內定Funtion叫做Awake()。

它是比Start()還要更優先被執行的區塊,如果想把事件的發生先後順序做更詳盡的劃分,可以把東西放進Awake()裡面來使用!

更多關於Unity程式執行先後順序、整體架構可以參考官方文件的這一篇說明:

https://docs.unity3d.com/Manual/ExecutionOrder.html

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s