下面是使用 Addressables 同步加载一个资源的示例代码:

using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class LoadResource : MonoBehaviour
{
    public AssetReference assetReference;

    private void Start()
    {
        LoadAsset();
    }

    private void LoadAsset()
    {
        // 同步加载资源
        AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>(assetReference);
        handle.Completed += OnLoadCompleted;
    }

    private void OnLoadCompleted(AsyncOperationHandle<GameObject> handle)
    {
        if (handle.Status == AsyncOperationStatus.Succeeded)
        {
            // 获取加载的资源
            GameObject loadedAsset = handle.Result;

            // 在这里可以对加载的资源进行操作,比如实例化、设置位置等

            // 释放资源
            Addressables.Release(handle);
        }
        else
        {
            Debug.LogError('Failed to load asset: ' + handle.OperationException);
        }
    }
}

上述代码首先定义了一个assetReference,该引用指向要加载的资源。

LoadAsset方法中,通过调用Addressables.LoadAssetAsync方法来加载资源,返回一个AsyncOperationHandle对象。

然后,通过订阅handle.Completed事件,在加载完成后调用OnLoadCompleted方法。

OnLoadCompleted方法中,首先检查加载操作的状态,如果加载成功,则可以通过handle.Result获取加载的资源。在这里你可以对资源进行任何操作,比如实例化、设置位置等。

最后,通过调用Addressables.Release方法释放资源,释放完资源后,你就可以在需要的地方使用它了。


原文地址: https://www.cveoy.top/t/topic/o3lb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录