|  |  | 
 |  |  |  | 
 |  |  | public class AudioLoader | 
 |  |  | { | 
 |  |  |     static string AUDIO_EXTERSION = ".wav"; | 
 |  |  |  | 
 |  |  |     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); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |