Unity組件刪除和添加
//添加 GameObect.AddComponent<ScriptName>(); //刪除 Destroy(GameObect.GetComponent<ScriptName>());
Unity3d獲取游戲對象的幾種方法
GameObject.Find();
Tranform.Find();
GameObject.FindGameObjectWithTag();
Unity3d中的碰撞器和觸發器的區別
碰撞器有碰撞的效果,IsTrigger=false,可以調用OnCollisionEnter/Stay/Exit函數;
觸發器沒有碰撞效果,IsTrigger=true,可以調OnTriggerEnter/Stay/Exit函數。
Unity3d腳本聲明周期
First Scene Load 第一個場景加載
Awake:這個函數是在Start函數之前以及預制物體實例化后被調用。
OnEnable:(僅在對象激活狀態下可用):這個函數在對象可用之后被調用。
Before the first frame update 第一幀更新之前
Start:如果腳本實例化被啟用,則Start函數在第一幀更新之前被調用。
In between frames 執行期間
FixedUpdate: FixedUpdate()比Update()函數調用的更頻繁。當幀率比較低時,它每幀被調用多次,如果幀率比較高,它有可能就不會被調用。所有的物理計算和更新都立即發生在FixedUpdate()之后。當在FixedUpdate()中計算物體移動時,你不需要乘以Time.deltaTime。因為FixedUpdate()是基於可靠的定時器的,不受幀率的影響。
Update() 每幀調用一次。這是幀更新的主要函數。
LateUpdate: 在Update()執行后,LateUpdate() 也是每幀都被調用。在Update()中執行的任何計算都會在LateUpdate()開始之前完成。LateUpdate()的一個常見應用就是第三人稱控制器的相機跟隨。如果你把角色的移動和旋轉放在Update()中,那么你就可以把所有相機的移動旋轉放在LateUpdate()。這是為了在相機追蹤角色位置之前,確保角色已經完成移動。
Coroutine 協同程序(協程)
yield:協程在所有的Update函數於下一幀調用后繼續執行。
yield WaitForSeconds(2):在一個指定的時間延遲后繼續執行,在所有的Update函數被調用之后。
yield WaitForFixedUpdate():在所有腳本上所有的FixedUpdate被調用之后繼續執行。
When the Object is Destroyed 當對象被銷毀時
OnDestroy: 這個函數在所有幀更新之后被調用,在對象存在的最后一幀(對象將銷毀來響應Object.Destroy或關閉一個場景)。
When Quitting 當退出時
OnApplicationQuit:在應用退出之前所有的游戲對象都會調用這個函數。在編輯器中當用戶停止播放時它將被調用。在webplayer中,當網頁關閉時被調用。
OnDisable: 當行為不可用或非激活時,這個函數被調用。
Unity物體之間的通信
委托和事件的用法
http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html
