18 子 2D卡牌客户端搭建 / 2D卡牌客户端搭建 资源加载接口统一(遗漏
| | |
| | | |
| | | public static AudioClip LoadAudio(string _folderName, string _clipName) |
| | | { |
| | | AudioClip audioClip = null; |
| | | if (AssetSource.audioFromEditor) |
| | | { |
| | | #if UNITY_EDITOR |
| | | var fileName = StringUtility.Contact("/", _clipName, AUDIO_EXTERSION); |
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, ResourcesPath.AUDIO_SUFFIX, _folderName, fileName); |
| | | |
| | | audioClip = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>(path); |
| | | #endif |
| | | } |
| | | else |
| | | { |
| | | var assetInfo = new AssetInfo(StringUtility.Contact("audio/", _folderName), _clipName); |
| | | audioClip = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as AudioClip; |
| | | } |
| | | |
| | | if (audioClip == null) |
| | | { |
| | | Debug.LogErrorFormat("AudioLoader.LoadSkillAudio() => 加载不到资源: {0}.", _clipName); |
| | | } |
| | | |
| | | return audioClip; |
| | | return ResManager.Instance.LoadAsset<AudioClip>("Audio/" + _folderName, _clipName); |
| | | } |
| | | |
| | | public static void LoadAudioAsync(string _folderName, string _clipName, Action<bool, UnityEngine.Object> _callBack) |
| | | { |
| | | AudioClip audioClip = null; |
| | | if (AssetSource.audioFromEditor) |
| | | { |
| | | #if UNITY_EDITOR |
| | | var fileName = StringUtility.Contact("/", _clipName, AUDIO_EXTERSION); |
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, ResourcesPath.AUDIO_SUFFIX, _folderName, fileName); |
| | | audioClip = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>(path); |
| | | |
| | | if (_callBack != null) |
| | | { |
| | | _callBack(true, audioClip); |
| | | } |
| | | #endif |
| | | } |
| | | else |
| | | { |
| | | var assetInfo = new AssetInfo(StringUtility.Contact("audio/", _folderName).ToLower(), _clipName); |
| | | AssetBundleUtility.Instance.Co_LoadAsset(assetInfo, _callBack); |
| | | } |
| | | |
| | | ResManager.Instance.LoadAssetAsync<AudioClip>("Audio/" + _folderName, _clipName, _callBack); |
| | | } |
| | | |
| | | } |
| | |
| | | #endif |
| | | } |
| | | |
| | | public void LoadAssetAsync<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object |
| | | { |
| | | // 特殊处理 因为有一层图集的关系 directory要传入的应该是atlas的名字 |
| | | if (typeof(T) == typeof(Sprite)) |
| | | { |
| | | LoadSpriteAsync<T>(directory, name, callBack); |
| | | return; |
| | | } |
| | | |
| | | LoadAssetAsyncInternal<T>(directory, name, callBack); |
| | | } |
| | | |
| | | private void LoadSpriteAsync<T>(string atlasName, string spriteName, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object |
| | | { |
| | | #if !UNITY_EDITOR |
| | | LoadAssetAsync<SpriteAtlas>("Sprite", atlasName, (isLoaded, atlas) => { |
| | | if (isLoaded) |
| | | { |
| | | callBack?.Invoke(isLoaded, atlas.GetSprite(spriteName)); |
| | | } |
| | | else |
| | | { |
| | | callBack?.Invoke(false, null); |
| | | } |
| | | }); |
| | | #else |
| | | // 编辑器下可以直接加载没啥问题 |
| | | LoadAssetAsyncInternal<T>("Sprite/" + atlasName, spriteName, callBack); |
| | | #endif |
| | | } |
| | | |
| | | private void LoadAssetAsyncInternal<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object |
| | | { |
| | | var path = string.Concat($"Assets/ResourcesOut/{directory}/{name}", GetExtension(typeof(T))).Replace("//", "/"); |
| | | |
| | | if (AssetSource.uiFromEditor) |
| | | { |
| | | #if UNITY_EDITOR |
| | | var asset = UnityEditor.AssetDatabase.LoadAssetAtPath<T>(path); |
| | | callBack?.Invoke(asset != null, asset); |
| | | #endif |
| | | } |
| | | else |
| | | { |
| | | var assetInfo = new AssetInfo(directory.ToLower(), name.ToLower()); |
| | | AssetBundleUtility.Instance.Co_LoadAsset(assetInfo, callBack); |
| | | } |
| | | } |
| | | |
| | | public void UnloadAsset(string assetBundleName, string assetName) |
| | | { |
| | | if (AssetSource.uiFromEditor) |