主題

【Unity學習】關於Invoke以及Time的一些簡易認知

高鐵道具象 | 2021-03-22 03:14:21 | 巴幣 2 | 人氣 77

不多說,直接上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的過程中額外產出的額外學習產物,要是要什麼需要補充或是提醒的地方歡迎指教

創作回應

相關創作

更多創作