2024年6月17日 星期一

Unity 等待另一個程式完成

2024.06.17  假設 Second.cs 要等待 First.cs 完成才執行,最基礎的方法當然是先執行 First.cs 後再調用 Second.cs 的函式,但是如果需要等待 First.cs 的程式很多,要參照的程式就很多,程式碼就會很長及不易偵錯。解決方法是使用 public static event Action。範例如下: 
using UnityEngine;
using System;
public class First : MonoBehaviour
{
    public static event Action onFristComplete;//設定變數
    private void Start()
    {
        ///先完成必須執行項目
        onFristComplete?.Invoke();//表示完成
    }
}
using UnityEngine;
using System;
public class Second : MonoBehaviour
{
    private void OnEnable()
    {
        First.onFristComplete += AfterFirstComplete;
    }
    private void OnDisable()
    {
        First.onFristComplete -= AfterFirstComplete;
    }
    void AfterFirstComplete()
    {
        ///First完成後要執行的程式
    }
}

沒有留言:

張貼留言