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