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; }