Unity WaitForEndOfFrame 介紹


建立時間: 2024年10月7日 02:33
更新時間: 2024年10月7日 02:44

說明

WaitForEndOfFrame 是 Unity 中 yield 關鍵字的基底類別,用於等待當前幀的所有渲染操作完成後再執行後續的程式碼。這個功能非常適合處理需要在每幀末尾執行的任務。

使用情境

這是我發生的情境

gameObject.transform.position = position;
gameObject.SetActive(true);

在我部署到 iOS 運行應用程式時,gameObject 會出現瞬移的情況,原因可能是因為渲染的關係,遊戲物件先顯示了,但設定新位置還沒被渲染,導致遊戲物件出現瞬移。

此時可以使用 WaitForEndOfFrame() 等待渲染後再激活遊戲物件。

範例

這裡參考 Unity 官方文件的範例,將其改寫,重點是使用 StartCoroutine() 會比較方便一點。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    private IEnumerator coroutine;

    private void Start()
    {
        coroutine = RunAfterAFrame();
        StartCoroutine(coroutine);
    }

    private IEnumerator RunAfterAFrame()
    {
        // 等待一幀格
        yield return new WaitForEndOfFrame();

        gameObject.SetActive(true);
    }
}

這裡給出最基本的 WaitForEndOfFrame() 情境,讀者們可以觸類旁通,應用在各種用途。

參考

觀看次數: 51
unityWaitForEndOfFrame
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!