Ⅰ unity3d,invoke函數 只能在 腳本的生命周期里的(Start、Update、OnG
Invoke() 方法是 Unity3D 的一種委託機制
如: Invoke("SendMsg", 5); 它的意思是:5 秒之後調用 SendMsg() 方法;
使用 Invoke() 方法需要注意 3點:
1 :它應該在 腳本的生命周期里的(Start、Update、OnGUI、FixedUpdate、LateUpdate)中被調用;
2:Invoke(); 不能接受含有 參數的方法;
3:在 Time.ScaleTime = 0; 時, Invoke() 無效,因為它不會被調用到
Invoke() 也支持重復調用:InvokeRepeating("SendMsg", 2 , 3);
這個方法的意思是指:2 秒後調用 SendMsg() 方法,並且之後每隔 3 秒調用一次 SendMsg () 方法。(轉載自http://blog.csdn.net/jeksonal/article/details/8609143)
Ⅱ unity物理更新一般放在哪個系統函數里
在編程之前首先你要向 GameObject 中增加一個 Rigidbody 的部件。 Rigidbody(剛體)的成員函數 void MovePosition(Vector3 position) 是用來改變剛體對象的 transform.position 值的,而且是「瞬間」改變到新的位置,而不是「逐漸移動過去」。如果它的新位置上有碰撞器,那麼會在下一次進入 Update 時立即對剛體應用受力。在新舊兩個位置之間的其它剛體不會受到它移動的影響(因為它是瞬間穿過去的)。 所以經常把 rigidbody.MovePosition 放到物理幀更新的函數 FixedUpdate,讓它步進移動,這樣就會碰撞一路上的其他碰撞體而不是穿越過去。例子: 12345678public class ExampleClass : MonoBehaviour{ private Vector3 speed = new Vector3(3, 0, 0); void FixedUpdate() { rigidbody.MovePosition(rigidbody.position + speed * Time.deltaTime); }} 表示每秒向X軸正向移動3個單位,並應用受力。
Ⅲ Unity3D之常用生命周期
關於Unity的生命周期雖然經常調用,但還是有一些細節總是記不清楚。今天就索性全部記錄下來,後續遇到再補充。
1、Awake() 喚醒事件,只執行一次。最先調用。
2、OnEnable() 開啟事件,當腳本組件被啟用的時候執行一次。
3、Start() 開始事件,只執行一次。在Awake()之後執行。
4、FixedUpdate() 固定更新事件,0.02秒更新一次。所有物理組件的相關的更新都在這個事件當中處理。
5、Update() 每幀執行一次(即每渲染完一次),沒幀渲染的時間不固定。
6、LateUpdate() 稍後更新事件,在Update()之後完畢之後再更新。
注意:雖然官方介紹LateUpdate() 在Update()之後更新,但我實際使用時,發現LateUpdate() 是在Update()之前調用,並且執行次數比Update()事件還多一次。
7、OnDisable() 禁用事件。執行一次,在OnDestroy()事件前執行。或者當前該腳本組件被禁用後,也會觸發該事件。
8、OnDestroy() 摧毀事件,執行一次。當腳本所掛載的游戲物體被摧毀時執行。
注意生命周期事件由系統調用,自行調用,與我們的書寫順序無關。
本文旨在紀錄自己的一些經驗,歡迎大家交流學習。
Ⅳ unity3d Update和FixedUpdate的區別
今天有人問我問什麼我在處理物理邏輯的時候把代碼放在了FixedUpdate里,而不用Update?
我說下他們的區別吧,知道了各自的特點,就知道原因了。
Update() 和 FixedUpdate()在游戲中都會在更新的時候自動循環調用。
但是Update是在每次渲染新的一幀的時候才會調用,也就是說,這個函數的更新頻率和設備的性能有關以及被渲染的物體(可以認為是三角形的數量)。在性能好的機器上可能fps 30,差的可能小些。這會導致同一個游戲在不同的機器上效果不一致,有的快有的慢。因為Update的執行間隔不一樣了。
而FixedUpdate,是在固定的時間間隔執行,不受游戲幀率的影響。有點想Tick。所以處理Rigidbody的時候最好用FixedUpdate。
PS:FixedUpdate的時間間隔可以在項目設置中更改,Edit->Project Setting->time 找到Fixed timestep。就可以修改了。
Ⅳ unity3d里的update函數問題
這個貌似可以將程序設置為後台運行,這樣可以實現切到其他窗口也繼續運行。
但是這個效果其實不是很好用,有時候切出去會運行不了。
Application .runInBackground = true;設定後台也運行。