※中肯辭典
(註:有別於官方文件上的嚴謹說明,在此以工程師的角度來簡短說明此元素的特質與使用時機。)
了解Start()、Update()以及Awake()等架構的運作,有助於更輕鬆地實作遊戲設計理念。
前幾篇都著重在Component的使用或特定功能的運作,漏掉了最基本的一些介紹XD
這是一個新的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。
這樣寫就能讓物件時時刻刻都在偵測有沒有被撞到,並且在適當的時機扣血,符合邏輯上的需求!
其實在OnCollisionEnter2D扣HP就好了啦,這邊只是示範概念XD
除了Start()和Update()之外,還有一個常用的Unity內定Funtion叫做Awake()。
它是比Start()還要更優先被執行的區塊,如果想把事件的發生先後順序做更詳盡的劃分,可以把東西放進Awake()裡面來使用!
更多關於Unity程式執行先後順序、整體架構可以參考官方文件的這一篇說明:
https://docs.unity3d.com/Manual/ExecutionOrder.html