美文网首页
2021-07-14【unity】Addressble bund

2021-07-14【unity】Addressble bund

作者: 持刀的要迟到了 | 来源:发表于2021-07-14 17:05 被阅读0次

    1.同步加载一个:

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

    2.同步加载多个:

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

    3.异步加载一个:

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

    4.异步加载:

    public async Task LoadAllEffectObj()
    {
        var loadedEffects = new List<GameObject>();
    
        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<GameObject>(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 bund

          本文链接:https://www.haomeiwen.com/subject/btgypltx.html