using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using Cysharp.Threading.Tasks; using System.Threading; using System.IO; using UnityEngine.U2D; using UnityEngine.UI; public class UILoader { // ==================================================================== // US2: Async UniTask variants // ==================================================================== public static async UniTask LoadSprite(string directory, string name, Image image) { var sprite = await LoadSpriteAsync(directory, name); if (null != sprite) { if (image != null) { image.overrideSprite = sprite; } } } public static async UniTask LoadSprite(string directory, string name, Image image, string failureName) { var sprite = await LoadSpriteAsync(directory, name); if (image == null) return; if (sprite != null) { image.overrideSprite = sprite; } else { image.SetSprite(failureName); } } public static UniTask LoadWindowAsync(string name, CancellationToken ct = default) { return ResManager.Instance.LoadAssetAsync(ResourcesPath.UI_WINDOW_SUFFIX, name, ct: ct); } public static UniTask LoadPrefabAsync(string _name, CancellationToken ct = default) { return ResManager.Instance.LoadAssetAsync(ResourcesPath.UI_PREFAB_SUFFIX, _name, ct: ct); } public static async UniTask LoadSpriteAsync(string _iconKey, CancellationToken ct = default) { var iconConfig = IconConfig.Get(_iconKey); if (iconConfig == null) return null; return await LoadSpriteAsync(iconConfig.folder, iconConfig.sprite, ct); } public static UniTask LoadSpriteAsync(string _folder, string _file, CancellationToken ct = default) { return ResManager.Instance.LoadAssetAsync( StringUtility.Concat(ResourcesPath.UI_SPRITE_SUFFIX, "/", _folder), _file, ct: ct); } public static UniTask LoadFontAsync(string _fontName, CancellationToken ct = default) { return ResManager.Instance.LoadAssetAsync(ResourcesPath.UI_FONT_SUFFIX, _fontName, ct: ct); } public static async UniTask LoadTexture2DAsync(string _iconKey, CancellationToken ct = default) { var iconConfig = IconConfig.Get(_iconKey); if (iconConfig == null) return null; return await ResManager.Instance.LoadAssetAsync( StringUtility.Concat(ResourcesPath.UI_TEXTURE_SUFFIX, "/" + iconConfig.folder), iconConfig.sprite, ct: ct); } public static async UniTask LoadTexture2DPNGAsync(string name, CancellationToken ct = default) { var path = StringUtility.Concat(ResourcesPath.UI_TEXTURE_SUFFIX, "/FullScreenBg"); var result = await ResManager.Instance.LoadAssetAsync(path, name + ".png", false, ct); return result; } }