Q1.Unity開發的程式進入點是什麼?
A1.Unity並沒有所謂的主程式進入點,遊戲以“場景”為一個主體,並且“場景”中有多個“遊戲物件”,每個“遊戲物件”內有一或多個“行為元件”。“行為元件”內才有所謂的起始進入點Awake,但要注意的是除非有經過設定每個“行為元件”的執行順序,不然在執行時“行為元件”的執行順序是不一定的。
Q2.寫好的Class怎麼使用呢?
A2.Unity內新增的程式檔案預設都會繼承MonoBehaviour,只要繼承MonoBehaviour就可以將這程式附加到“遊戲物件”上成為“行為元件”。只有在場景中的行為元件上的Awake、Start...等等MonoBehaviour的函式才會被執行。
Q3.MonoBehaviour有哪些函式?在什麼情況下用?
A3.通常最常用的是
Awake 、Start、Update還有碰撞相關的OnCollisionEnter、OnTriggerEnter,Awake 、Start用於初始化(Awake會比Start先執行),Update是每個Frame會執行一次,其他詳細的MonoBehaviour請參閱這裡。
Q4.Frame是什麼意思?
A4.在遊戲中是指程式執行頻率也就是FPS(是Frames Per Second不是First Person Shooter),意味著一秒鐘執行多少個Frame。
Q5.有辦法知道每Frame的實際執行耗時嗎?
A5.Unity有提供Time.deltaTime可以取得每Frame實際耗時。
Q6.設定行為元件的enable?
A6.

Q7.遊戲物件的父子物件關係?
A7.遊戲物件可以跟別的遊戲物件成為父子物件關係,子物件會隨著父物件移動。
Q8.如何執行別的行為元件的函式?
A8.1)宣告一該行為元件型態變數,并在Unity Editor上將指定的行為元件設定到變數上,或者是在程式裡用Object.FindObjectOfType(在別的遊戲物件上)、GetComponent(在本身的遊戲物件上)並執行函式。2)將該函式宣告為static,但並不建議此方法,除非是用在類似整個遊戲狀態管理上。3)使用Unity的SendMessage機制,SendMessage系列有三種,1.SendMessage(string methodName):對本身遊戲物件上的所有行為元件(不含父物件及子物件上的)通知執行跟methodName同名的函式;2.SendMessageUpwards(string methodName):對本身遊戲物件及父物件上的所有行為元件(不含子物件上的)通知執行跟methodName同名的函式;3.BroadcastMessage(string methodName):對本身遊戲物件及子物件上的所有行為元件(不含父物件上的)通知執行跟methodName同名的函式。
Q9.Prefab機制?
A9.當“遊戲物件”綁上很多“行為元件”後,要怎麼去重複利用這個“遊戲物件”呢?於是Prefab機制就出現了,將設定好的“遊戲物件”拖曳到Project View就可以將它變成Prefab。只要將Prefab拖曳到場景中就可以變成已經設定好的“遊戲物件”,這裡要注意的是Prefab跟產生出來的“遊戲物件”有父子關係。只要Prefab上的設定一更動,所有由此Prefab產生的“遊戲物件”都會更動,但如果是“遊戲物件”更動的話是不會影響Prefab及其它“遊戲物件”。

之後有想到什麼再補充上去吧...
沒有留言:
張貼留言