0
点赞
收藏
分享

微信扫一扫

郊游、旅游管理系统-计算机毕设Java|springboot实战项目

cnlinkchina 2024-08-15 阅读 22

协程和 IEnumerator 操作处理 方法

在协程中,您可以让出操作句柄以等待下一次迭代。完成后,执行流将继续执行以下语句。您可以将 MonoBehaviour Start 方法实现为协程,这是加载和实例化游戏对象所需资源的好方法。

以下脚本使用协程中的方法将预制件加载为其 GameObject 的子项。它产生,直到操作完成,然后使用相同的句柄来实例化预制件。StartAsyncOperationHandle


using System.Collections;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

internal class LoadWithIEnumerator : MonoBehaviour
{
    public string address;
    AsyncOperationHandle<GameObject> opHandle;

    public IEnumerator Start()
    {
        opHandle = Addressables.LoadAssetAsync<GameObject>(address);

        // yielding when already done still waits until the next frame
        // so don't yield if done.
        if (!opHandle.IsDone)
            yield return opHandle;

        if (opHandle.Status == AsyncOperationStatus.Succeeded)
        {
            Instantiate(opHandle.Result, transform);
        }
        else
        {
            Addressables.Release(opHandle);
        }
    }

    void OnDestroy()
    {
        Addressables.Release(opHandle);
    }
}

举报

相关推荐

0 条评论