Unity3d延时执行程序的方法
這里只給出了兩種方法,以后繼續補充。
【一】協程
例子:
void Start()? ? {
? ? ? ? StartCoroutine(PlayerAttack());
? ? }
IEnumerator PlayerAttack()
? ? {
? ? ? ? yield return new WaitForSeconds(3.0f);
? ? ? ? Debug.Log("After 3s");
? ? }
3秒后顯示“After 3s”信息。
注意:協程有些復雜,例如上面的程序修改成下面的樣子后:
void Start()
? ? {
? ? ? ? StartCoroutine(PlayerAttack());
? ? ? ? Debug.Log("After PlayerAttack");
? ? }
IEnumerator PlayerAttack()
? ? {
? ? ? ? yield return new WaitForSeconds(3.0f);
? ? ? ? Debug.Log("After 3s");
? ? }
在顯示“After 3s”信息前,會先顯示“After PlayerAttack”信息。
【二】Invoke()方法
例子:
void Start()
? ? {
? ? ? ? Invoke("ShowWord", 3f);
? ? }
? ? public void ShowWord()
? ? {
? ? ? ? Debug.Log("I love the bird");
? ? }
3秒后調用ShowWord()方法顯示“I love the bird”信息。
注意:
Invoke()是一種委托機制,網上說有如下3點需要注意的事項:
1.它應該在腳本的生命周期里的Start()、Update()、OnGUI()、FIxedUpdate()、LateUpdate()中被調用;
2.Invoke()方法里不能接受含有參數的方法;
3.在 Time.ScaleTime = 0; 時,Invoke() 方法無效,因為它不會被調用。
對于第一點不是很了解,因為如下程序是可以按照預料去執行的:
void Start()
? ? {
? ? ? ? CallYou();
? ? }
? ? public void CallYou()
? ? {
? ? ? ? Invoke("ShowWord", 3f);
? ? }
? ? public void ShowWord()
? ? {
? ? ? ? Debug.Log("I love the bird");
? ? }
上面程序中沒有直接在 Start() 方法中調用 Invoke() 方法,不過還是正常執行,說明了這樣使用 Invoke() 方法相當于直接在 Start() 方法中調用。
希望有誰能解釋一下第一點是什么意思。
總結
以上是生活随笔為你收集整理的Unity3d延时执行程序的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#3串口调试助手
- 下一篇: 如何让各大云盘下载成为你的小金库,独家原