| | |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using UnityEngine.U2D; |
| | | using Cysharp.Threading.Tasks; |
| | | using System.Threading; |
| | | using ProjSG.Resource; |
| | | |
| | | public class BuiltInLoader |
| | | { |
| | |
| | | public static Sprite LoadSprite(string name) |
| | | { |
| | | Sprite sprite = null; |
| | | if (AssetSource.builtInFromEditor) |
| | | if (!AssetSource.isUseAssetBundle) |
| | | { |
| | | #if UNITY_EDITOR |
| | | if (excludePngs.Contains(StringUtility.Contact(name, SPRITE_EXTENSION))) |
| | | if (excludePngs.Contains(StringUtility.Concat(name, SPRITE_EXTENSION))) |
| | | { |
| | | var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/Sprites/", name, SPRITE_EXTENSION); |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Sprites/", name, SPRITE_EXTENSION); |
| | | path = System.Text.RegularExpressions.Regex.Replace(path, @"[\p{C}]", ""); |
| | | sprite = UnityEditor.AssetDatabase.LoadAssetAtPath<Sprite>(path); |
| | | } |
| | | else |
| | |
| | | } |
| | | else |
| | | { |
| | | //var assetInfo = new AssetInfo("builtin/sprites", "sprites"); |
| | | //var spriteAtlas = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo, typeof(SpriteAtlas)) as SpriteAtlas; |
| | | //sprite = spriteAtlas?.GetSprite(name); |
| | | //if (sprite == null) |
| | | { |
| | | var assetInfo = new AssetInfo("builtin/sprites", name); |
| | | sprite = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo, typeof(Sprite)) as Sprite; |
| | | // US1: Route through YooAssetService sync wrapper |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Sprites/", name, SPRITE_EXTENSION); |
| | | #pragma warning disable CS0612 |
| | | sprite = YooAssetService.Instance.LoadAssetSync<Sprite>(path); |
| | | #pragma warning restore CS0612 |
| | | } |
| | | } |
| | | |
| | |
| | | public static GameObject LoadPrefab(string name) |
| | | { |
| | | GameObject prefab = null; |
| | | if (AssetSource.builtInFromEditor) |
| | | if (!AssetSource.isUseAssetBundle) |
| | | { |
| | | #if UNITY_EDITOR |
| | | var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/Prefabs/", name, PREFAB_EXTENSION); |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Prefabs/", name, PREFAB_EXTENSION); |
| | | prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path); |
| | | #endif |
| | | } |
| | | else |
| | | { |
| | | var assetInfo = new AssetInfo("builtin/prefabs", name); |
| | | prefab = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as GameObject; |
| | | // US1: Route through YooAssetService sync wrapper |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Prefabs/", name, PREFAB_EXTENSION); |
| | | #pragma warning disable CS0612 |
| | | prefab = YooAssetService.Instance.LoadAssetSync<GameObject>(path); |
| | | #pragma warning restore CS0612 |
| | | } |
| | | |
| | | if (prefab == null) |
| | |
| | | |
| | | public static void UnLoadPrefab(string name) |
| | | { |
| | | if (!AssetSource.builtInFromEditor) |
| | | { |
| | | AssetBundleUtility.Instance.UnloadAsset("builtin/prefabs", name); |
| | | } |
| | | // US1: No-op. YooAsset manages asset lifecycle via handle-based release. |
| | | } |
| | | |
| | | public static AudioClip LoadMusic(string name) |
| | | { |
| | | AudioClip audioClip = null; |
| | | if (AssetSource.builtInFromEditor) |
| | | if (!AssetSource.isUseAssetBundle) |
| | | { |
| | | #if UNITY_EDITOR |
| | | var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/Musics/", name, AUDIO_EXTENSION); |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Musics/", name, ".mp3"); |
| | | audioClip = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>(path); |
| | | #endif |
| | | } |
| | | else |
| | | { |
| | | var assetInfo = new AssetInfo("builtin/musics", name); |
| | | audioClip = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as AudioClip; |
| | | // US1: Route through YooAssetService sync wrapper |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Musics/", name, ".mp3"); |
| | | #pragma warning disable CS0612 |
| | | audioClip = YooAssetService.Instance.LoadAssetSync<AudioClip>(path); |
| | | #pragma warning restore CS0612 |
| | | } |
| | | |
| | | if (audioClip == null) |
| | |
| | | public static AnimationClip LoadAnimationClip(string name) |
| | | { |
| | | AnimationClip clip = null; |
| | | if (AssetSource.builtInFromEditor) |
| | | if (!AssetSource.isUseAssetBundle) |
| | | { |
| | | #if UNITY_EDITOR |
| | | var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/AnimationClips/", name, ".anim"); |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/AnimationClips/", name, ".anim"); |
| | | clip = UnityEditor.AssetDatabase.LoadAssetAtPath<AnimationClip>(path); |
| | | #endif |
| | | } |
| | | else |
| | | { |
| | | var assetInfo = new AssetInfo("builtin/animationclips", name); |
| | | clip = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as AnimationClip; |
| | | // US1: Route through YooAssetService sync wrapper |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/AnimationClips/", name, ".anim"); |
| | | #pragma warning disable CS0612 |
| | | clip = YooAssetService.Instance.LoadAssetSync<AnimationClip>(path); |
| | | #pragma warning restore CS0612 |
| | | } |
| | | |
| | | if (clip == null) |
| | |
| | | public static Material LoadMaterial(string name) |
| | | { |
| | | Material material = null; |
| | | if (AssetSource.builtInFromEditor) |
| | | if (!AssetSource.isUseAssetBundle) |
| | | { |
| | | #if UNITY_EDITOR |
| | | var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/Materials/", name, ".mat"); |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Materials/", name, ".mat"); |
| | | material = UnityEditor.AssetDatabase.LoadAssetAtPath<Material>(path); |
| | | #endif |
| | | } |
| | | else |
| | | { |
| | | var assetInfo = new AssetInfo("builtin/materials", name); |
| | | material = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as Material; |
| | | // US1: Route through YooAssetService sync wrapper |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Materials/", name, ".mat"); |
| | | #pragma warning disable CS0612 |
| | | material = YooAssetService.Instance.LoadAssetSync<Material>(path); |
| | | #pragma warning restore CS0612 |
| | | } |
| | | |
| | | if (material == null) |
| | |
| | | { |
| | | |
| | | T config = null; |
| | | if (AssetSource.builtInFromEditor) |
| | | if (!AssetSource.isUseAssetBundle) |
| | | { |
| | | #if UNITY_EDITOR |
| | | var resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, |
| | | var resourcePath = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath, |
| | | "BuiltIn/ScriptableObjects/", name, ".asset"); |
| | | |
| | | config = UnityEditor.AssetDatabase.LoadAssetAtPath<T>(resourcePath); |
| | |
| | | } |
| | | else |
| | | { |
| | | var assetInfo = new AssetInfo("builtin/scriptableobjects", name); |
| | | config = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as T; |
| | | // US1: Route through YooAssetService sync wrapper |
| | | var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath, |
| | | "BuiltIn/ScriptableObjects/", name, ".asset"); |
| | | #pragma warning disable CS0612 |
| | | config = YooAssetService.Instance.LoadAssetSync<T>(path); |
| | | #pragma warning restore CS0612 |
| | | } |
| | | |
| | | if (config == null) |
| | |
| | | public static Font LoadFont(string fontName) |
| | | { |
| | | Font font = null; |
| | | if (AssetSource.builtInFromEditor) |
| | | if (!AssetSource.isUseAssetBundle) |
| | | { |
| | | #if UNITY_EDITOR |
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, |
| | | var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath, |
| | | "BuiltIn/Font/", fontName, ".ttf"); |
| | | font = UnityEditor.AssetDatabase.LoadAssetAtPath<Font>(path); |
| | | #endif |
| | | } |
| | | else |
| | | { |
| | | var assetInfo = new AssetInfo("builtin/font", fontName); |
| | | font = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo, typeof(Font)) as Font; |
| | | // US1: Route through YooAssetService sync wrapper |
| | | var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath, |
| | | "BuiltIn/Font/", fontName, ".ttf"); |
| | | #pragma warning disable CS0612 |
| | | font = YooAssetService.Instance.LoadAssetSync<Font>(path); |
| | | #pragma warning restore CS0612 |
| | | } |
| | | |
| | | if (font == null) |
| | |
| | | return font; |
| | | } |
| | | |
| | | // ==================================================================== |
| | | // US2: Async UniTask variants |
| | | // ==================================================================== |
| | | |
| | | public static async UniTask<Sprite> LoadSpriteAsync(string name, CancellationToken ct = default) |
| | | { |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Sprites/", name, SPRITE_EXTENSION); |
| | | return await YooAssetService.Instance.LoadAssetAsync<Sprite>(path, ct: ct); |
| | | } |
| | | |
| | | public static async UniTask<GameObject> LoadPrefabAsync(string name, CancellationToken ct = default) |
| | | { |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Prefabs/", name, PREFAB_EXTENSION); |
| | | return await YooAssetService.Instance.LoadAssetAsync<GameObject>(path, ct: ct); |
| | | } |
| | | |
| | | public static async UniTask<AudioClip> LoadMusicAsync(string name, CancellationToken ct = default) |
| | | { |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Musics/", name, ".mp3"); |
| | | return await YooAssetService.Instance.LoadAssetAsync<AudioClip>(path, ct: ct); |
| | | } |
| | | |
| | | public static async UniTask<AnimationClip> LoadAnimationClipAsync(string name, CancellationToken ct = default) |
| | | { |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/AnimationClips/", name, ".anim"); |
| | | return await YooAssetService.Instance.LoadAssetAsync<AnimationClip>(path, ct: ct); |
| | | } |
| | | |
| | | public static async UniTask<Material> LoadMaterialAsync(string name, CancellationToken ct = default) |
| | | { |
| | | var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Materials/", name, ".mat"); |
| | | return await YooAssetService.Instance.LoadAssetAsync<Material>(path, ct: ct); |
| | | } |
| | | |
| | | public static async UniTask<T> LoadScriptableObjectAsync<T>(string name, CancellationToken ct = default) where T : ScriptableObject |
| | | { |
| | | var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath, |
| | | "BuiltIn/ScriptableObjects/", name, ".asset"); |
| | | return await YooAssetService.Instance.LoadAssetAsync<T>(path, ct: ct); |
| | | } |
| | | |
| | | public static async UniTask<Font> LoadFontAsync(string fontName, CancellationToken ct = default) |
| | | { |
| | | var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath, |
| | | "BuiltIn/Font/", fontName, ".ttf"); |
| | | return await YooAssetService.Instance.LoadAssetAsync<Font>(path, ct: ct); |
| | | } |
| | | |
| | | |
| | | } |