2021-07-14【unity】Addressble bundle

1.同步加载一个:

        public T LoadAsset(string key, Action callback = null)
        {
            var op = Addressables.LoadAssetAsync(key);
            var t = op.WaitForCompletion();
            callback?.Invoke(t);
            Addressables.Release(op);
            return t;
        }

2.同步加载多个:

        public IList LoadAssets(string key, Action callback = null)
        {
            var op = Addressables.LoadAssetsAsync(key, ta => callback?.Invoke(ta));
            var t = op.WaitForCompletion();
            Addressables.Release(op);
            return t;
        }

3.异步加载一个:

        public async Task LoadAssetAsync(string key, Action callback = null)
        {
            var t = await Addressables.LoadAssetAsync(key).Task;
            callback?.Invoke(t);
            return t;
        }

4.异步加载:

public async Task LoadAllEffectObj()
{
    var loadedEffects = new List();

    int count = EFX.rows.Length;
    for (int i = 0; i < EFX.rows.Length; ++i)
    {
        var path = StringUtility.GetBuilder().Append(EFX.rows[i].respath).Append(EFX.rows[i].m枚举).Append(".prefab").ToString();
        LoadMgr.Instance.LoadAssetAsync(path,
            (x) =>
            {
                count--;
                if (x != null)
                {
                    Debug.Log("加载特效:" + path);
                    loadedEffects.Add(x);
                }
                else
                {
                    Debug.LogError("加载特效失败:" + path);
                }
            });
    }

    await Task.Run(() =>
    {
        while (count > 0)
        {
            //wait
        }
        return;
    });


    ObjectPool.PreloadedPrefab[] allPrefabs = new ObjectPool.PreloadedPrefab[loadedEffects.Count];
    for (int i = 0; i < loadedEffects.Count; i++)
    {
        ObjectPool.PreloadedPrefab preloadedPrefab = new ObjectPool.PreloadedPrefab(loadedEffects[i], 2) { };
        allPrefabs[i] = preloadedPrefab;
    }
    ObjectPool.Instance.AddPreloadPrefabs(allPrefabs);
}

你可能感兴趣的:(2021-07-14【unity】Addressble bundle)