不多說,直接上code以及結果圖
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InvokeTest : MonoBehaviour
{
[SerializeField]
private float nowTime;
private int count;
void Start()
{
nowTime = Time.time;
//這邊是第一次看到Time.time,故順便做個學習的紀錄
//Time.time-只有get屬性,所以為只讀屬性(Read Only),主要為記錄當前執行禎數(總時長)
//Time.deltaTime-只有get屬性,所以為只讀屬性(Read Only),每禎之間執行的時間,主要Time.deltaTime*自定義float變數來控制速度
//Time.timeScale-是一種返回float數據類型的static屬性,同時具有get與set屬性,用來控制遊戲執行速度,可以用來完成遊戲中暫停(timeScale=0.0f)、撥放(1.0)、加快(>1.0)、變慢(<1.0)的效果
Debug.Log("時間點:" + nowTime);
this.Invoke("setTimeOut", 3.0f);//延遲3秒後執行setTimeOut
this.InvokeRepeating("setInterval", 2.0f, 1.0f);//延遲兩秒後每一秒執行一次setInterval
}
// Update is called once per frame
private void setTimeOut()
{
nowTime = Time.time;
Debug.Log("延後並執行一次的方法:" + nowTime);
}
private void setInterval()
{
nowTime = Time.time;
Debug.Log("延長並重複執行的方法:" + nowTime);
count += 1;
if (count == 5)
{
CancelInvoke();//停止該腳本中的全部Invoke
CancelInvoke("setInterval");//停止指定的Invoke
}
}
//最後做個補充,在UnityEvent中,加入.Invoke()則是執行該Event的指令,而非延遲
}
這篇算是在學Event的過程中額外產出的額外學習產物,要是要什麼需要補充或是提醒的地方歡迎指教