Addressable 批量预加载
const string PreloadLabel = "preload";
 
static Dictionary<string, UnityEngine.Object> resources = new Dictionary<string, UnityEngine.Object>();
 
       
static bool preloaded = false;
        public static bool Preloaded { get { return preloaded; } }
 
       
public static async Task Preload()
        {
            Debug.Log("Preloading Addressables. Time: " + Time.realtimeSinceStartup + " Frame: " + Time.frameCount);
 
            var list = await Addressables.LoadResourceLocationsAsync(PreloadLabel, null).Task;
 
            if (list == null) return;
 
            List<string> keys = new List<string>(list.Count);
 
            foreach (var key in list)
            {
                keys.Add(key.PrimaryKey);
            }
 
            var r2 = await Addressables.LoadAssetsAsync<UnityEngine.Object>(list, null).Task;
                        if (r2 != null)
            {
                if (r2.Count != keys.Count)
                {
                    Debug.LogError("Loaded objects count differs from key count!");
                    return;
                }
 
                for (int i = 0; i < keys.Count; i++)
                    resources.Add(keys[i], r2[i]);
 
                Debug.Log("Addressables Preloaded. Time: " + Time.realtimeSinceStartup + " Frame: " + Time.frameCount);
 
            }
 
            preloaded = true;
 
        }

image.png


首页 我的博客
粤ICP备17103704号