Unity中在非运行状态中播放AudioClip
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Unity中在非运行状态中播放AudioClip,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2271字,纯文字阅读大概需要4分钟。
内容图文
这里用到反射,会用到AudioUtil,源码调用如下:
https://github.com/jamesjlinden/unity-decompiled/blob/master/UnityEditor/UnityEditor/AudioUtil.cs
思路如下:
http://baba-s.hatenablog.com/entry/2017/12/04/173920
这里放一下拓展类:
1 #if UNITY_EDITOR 2using System; 3using UnityEditor; 4#endif 5using System.Reflection; 6using UnityEngine; 7 8//生成配置文件 9 [CreateAssetMenu(fileName = "AudioClipPlayWithOutRunning", menuName = "AudioClipPlayWithOutRunning", order = 0)] 10[Serializable] 11publicclass AudioClipPlayWithOutRunning : ScriptableObject 12{ 13//存储数据14 [SerializeField] private AudioClip soundData; 1516//自动绑定脚本17 [CustomEditor(typeof(AudioClipPlayWithOutRunning))] 18class AudioClipPlayWithOutRunningEditor : Editor 19 { 20publicoverridevoid OnInspectorGUI() 21 { 22var tempData = target as AudioClipPlayWithOutRunning; 23 tempData.soundData = 24 (AudioClip) EditorGUILayout.ObjectField("AudioClip", tempData.soundData, typeof(AudioClip)); 25if (GUILayout.Button("PlayClip")) 26 { 27 PlayClip(tempData.soundData); 28 } 2930if (GUILayout.Button("StopClip")) 31 { 32 StopClip(tempData.soundData); 33 } 34 } 3536void PlayClip(AudioClip clip) 37 { 38if (clip == null) 39 { 40 Debug.LogError("SampleContainer PlayClip clip is null"); 41return; 42 } 4344var unityEditorAssembly = typeof(AudioImporter).Assembly; 45//获取dll46var audioUtil = unityEditorAssembly.GetType("UnityEditor.AudioUtil"); 47//获取反射方法48var method = audioUtil.GetMethod 49 ( 50"PlayClip", 51 BindingFlags.Default | BindingFlags.Static | BindingFlags.Public, 52null, 53new[] {typeof(AudioClip)}, 54null55 ); 56//调用57 method.Invoke(null, new[] {clip}); 58 } 5960void StopClip(AudioClip clip) 61 { 62if (clip == null) 63 { 64 Debug.LogError("SampleContainer StopClip clip is null"); 65return; 66 } 6768var unityEditorAssembly = typeof(AudioImporter).Assembly; 69var audioUtil = unityEditorAssembly.GetType("UnityEditor.AudioUtil"); 70var method = audioUtil.GetMethod 71 ( 72"StopClip", 73 BindingFlags.Default | BindingFlags.Static | BindingFlags.Public, 74null, 75new[] {typeof(AudioClip)}, 76null77 ); 78 method.Invoke(null, new[] {clip}); 79 } 80 } 81 }
这个时候在Unity中点击Asset -> AudioClipPlayWithOutRunning 生成该配置文件.
将音效资源放入进去即可.. ..
这样
原文:https://www.cnblogs.com/bw1219/p/12022600.html
内容总结
以上是互联网集市为您收集整理的Unity中在非运行状态中播放AudioClip全部内容,希望文章能够帮你解决Unity中在非运行状态中播放AudioClip所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。