|  |  |  | 
|---|
|  |  |  | using System.IO; | 
|---|
|  |  |  | using UnityEngine.Video; | 
|---|
|  |  |  | using Spine.Unity; | 
|---|
|  |  |  | using UnityEngine.UI; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | {typeof(GameObject), "prefab"}, | 
|---|
|  |  |  | {typeof(Sprite), "png"}, | 
|---|
|  |  |  | {typeof(Texture2D), "png"}, | 
|---|
|  |  |  | {typeof(Shader), "shader"}, | 
|---|
|  |  |  | {typeof(Texture2D), "jpg"}, | 
|---|
|  |  |  | {typeof(Texture), "jpg"}, | 
|---|
|  |  |  | { typeof(Shader), "shader"}, | 
|---|
|  |  |  | {typeof(TextAsset), "txt"}, | 
|---|
|  |  |  | {typeof(AudioClip), "wav"}, | 
|---|
|  |  |  | {typeof(Font), "ttf"}, | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #endif | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public T LoadAsset<T> (string directory, string name) where T : UnityEngine.Object | 
|---|
|  |  |  | public T LoadAsset<T> (string directory, string name, bool needExt = true) where T : UnityEngine.Object | 
|---|
|  |  |  | { | 
|---|
|  |  |  | T asset = null; | 
|---|
|  |  |  | //  特殊处理 因为有一层图集的关系 directory要传入的应该是atlas的名字 | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return LoadSprite(directory, name) as T; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (typeof(T) == typeof(SkeletonDataAsset)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //文件目录调整,name中包含了路径 | 
|---|
|  |  |  | if (name.Contains("/")) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | directory += name.Substring(0, name.LastIndexOf("/")); | 
|---|
|  |  |  | name = name.Substring(name.LastIndexOf("/") + 1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return LoadAssetInternal<T>(directory, name); | 
|---|
|  |  |  | directory = directory.Replace("\\", "/"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return LoadAssetInternal<T>(directory, name, needExt); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private T LoadAssetInternal<T>(string directory, string name) where T : UnityEngine.Object | 
|---|
|  |  |  | private T LoadAssetInternal<T>(string directory, string name, bool needExt = true) where T : UnityEngine.Object | 
|---|
|  |  |  | { | 
|---|
|  |  |  | T asset = null; | 
|---|
|  |  |  | var path = ($"Assets/ResourcesOut/{directory}/{name}" + (needExt ? GetExtension(typeof(T)) : "")).Replace("//", "/").Trim().Replace("\\", "/"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var path = ($"Assets/ResourcesOut/{directory}/{name}" + GetExtension(typeof(T))).Replace("//", "/").Trim().Replace("\\", "/"); | 
|---|
|  |  |  | if (!AssetSource.isUseAssetBundle) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | #if UNITY_EDITOR | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (!needExt) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //外部用到的自己加后缀,内部统一去除后缀名 | 
|---|
|  |  |  | name = name.Substring(0, name.LastIndexOf(".")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (directory == "UI" || directory == "UIComp" || directory.StartsWith("Sprite") | 
|---|
|  |  |  | || directory == "Battle/Prefabs" || directory == "Materials") | 
|---|
|  |  |  | { | 
|---|
|  |  |  | directory = "UI/" + directory; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (name == "Hero_001") | 
|---|
|  |  |  | { | 
|---|
|  |  |  | directory = "UI/Hero/SpineRes"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | else if (directory.Contains("Texture")) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | directory = "maps/" + name; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var assetInfo = new AssetInfo(directory.ToLower(), name.ToLower()); | 
|---|
|  |  |  | asset = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo, typeof(T)) as T; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | public string[] LoadConfig(string name) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string path = string.Empty; | 
|---|
|  |  |  | #if UNITY_EDITOR | 
|---|
|  |  |  | if (!AssetSource.isUseAssetBundle) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | #if UNITY_EDITOR | 
|---|
|  |  |  | path = ResourcesPath.CONFIG_FODLER + "/" + name + ".txt"; | 
|---|
|  |  |  | #endif | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | #endif | 
|---|
|  |  |  | { | 
|---|
|  |  |  | path = AssetVersionUtility.GetAssetFilePath($"Config/{name}.txt"); | 
|---|
|  |  |  | path = AssetVersionUtility.GetAssetFilePath($"config/{name}.txt"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return File.ReadAllLines(path); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Sprite LoadSprite(string atlasName, string spriteName) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | #if !UNITY_EDITOR | 
|---|
|  |  |  | SpriteAtlas atlas = LoadAsset<SpriteAtlas>("Sprite", atlasName.Replace("Sprite/", "")); | 
|---|
|  |  |  | return atlas.GetSprite(spriteName); | 
|---|
|  |  |  | #else | 
|---|
|  |  |  | return ResManager.Instance.LoadAssetInternal<Sprite>(atlasName, spriteName); | 
|---|
|  |  |  | #endif | 
|---|
|  |  |  | if (!AssetSource.isUseAssetBundle) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | SpriteAtlas atlas = LoadAsset<SpriteAtlas>("Sprite", atlasName.Replace("Sprite/", "")); | 
|---|
|  |  |  | return atlas.GetSprite(spriteName); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | return LoadAssetInternal<Sprite>(atlasName, spriteName); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void LoadAssetAsync<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object | 
|---|
|  |  |  | public void LoadAssetAsync<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack, bool needExt = true) where T : UnityEngine.Object | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //  特殊处理 因为有一层图集的关系 directory要传入的应该是atlas的名字 | 
|---|
|  |  |  | if (typeof(T) == typeof(Sprite)) | 
|---|
|  |  |  | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | LoadAssetAsyncInternal<T>(directory, name, callBack); | 
|---|
|  |  |  | LoadAssetAsyncInternal<T>(directory, name, callBack, needExt); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void LoadSpriteAsync<T>(string atlasName, string spriteName, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object | 
|---|
|  |  |  | 
|---|
|  |  |  | LoadAssetAsync<SpriteAtlas>(atlasName, spriteName, (isLoaded, atlas) => { | 
|---|
|  |  |  | if (isLoaded) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | callBack?.Invoke(isLoaded, atlas.GetSprite(spriteName)); | 
|---|
|  |  |  | SpriteAtlas _atlas = atlas as SpriteAtlas; | 
|---|
|  |  |  | callBack?.Invoke(isLoaded, _atlas.GetSprite(spriteName)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | #endif | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void LoadAssetAsyncInternal<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object | 
|---|
|  |  |  | private void LoadAssetAsyncInternal<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack, bool needExt = true) where T : UnityEngine.Object | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var path = string.Concat($"Assets/ResourcesOut/{directory}/{name}", GetExtension(typeof(T))).Replace("//", "/"); | 
|---|
|  |  |  | var path = string.Concat($"Assets/ResourcesOut/{directory}/{name}", (needExt ? GetExtension(typeof(T)) : "")).Replace("//", "/"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!AssetSource.isUseAssetBundle) | 
|---|
|  |  |  | { | 
|---|