public static IPromise PreloadAll() { var types = GetTypes(); var preloadPromises = types.Select(t => { var argName = t.Name; if (t.IsSubclassOf(typeof(AddressableSingletonAsset))) { return(AddressableExtensions.LoadAsync <AddressableSingletonAsset>(argName)); } else { return(ResourceExtensions.LoadAsync(argName)); } }); return(Promise.All(preloadPromises) .ThenDo <object[]>(assets => { for (var i = 0; i < assets.Length; i++) { var singletonAsset = (SingletonAsset)assets[i]; AssetDictionary.Add(types[i], singletonAsset); } })); }
public static IPromise InstanceAsync <T>() where T : AddressableSingletonAsset { if (AssetDictionary.TryGetValue(typeof(T), out var asset)) { return(Promise.Resolved((T)asset)); } return(AddressableExtensions.LoadAsync <T>(typeof(T).Name)); }