| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | using System; |
| | | using Cysharp.Threading.Tasks; |
| | | using System.Threading; |
| | | |
| | | public class AudioLoader |
| | | { |
| | | static string AUDIO_EXTERSION = ".wav"; |
| | | |
| | | public static AudioClip LoadAudio(string _folderName, string _clipName) |
| | | public static async UniTask<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 await ResManager.Instance.LoadAssetAsync<AudioClip>("Audio/" + _folderName, _clipName, false); |
| | | } |
| | | |
| | | public static void LoadAudioAsync(string _folderName, string _clipName, Action<bool, UnityEngine.Object> _callBack) |
| | | // US2: Async UniTask variant |
| | | public static UniTask<AudioClip> LoadAudioAsync(string _folderName, string _clipName, CancellationToken ct = default) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | return ResManager.Instance.LoadAssetAsync<AudioClip>("Audio/" + _folderName, _clipName, false, ct); |
| | | } |
| | | |
| | | } |
| | | |