private static void PlayAudio(string path,float volume, bool is3D,Transform parent,Vector3 pos,float delay)
{
//获得音频
AudioClip clip = Resources.Load<AudioClip>(path);
//新建对象
GameObject obj = new GameObject(path+":"+Time.time);
//把调用该方法的脚本设置为父类
obj.transform.parent = parent;
obj.transform.localPosition = pos;
//添加播放组件,并播放
AudioSource source = obj.AddComponent<AudioSource>();
//设置播放的音频
source.clip = clip;
//设置播放的模式
source.spatialBlend = is3D ? 1:0;
//是否在运行时就播放
source.playOnAwake = false;
//播放是否延迟
if(delay>0)
source.PlayDelayed(delay);
else
source.Play();
//在播放完成后就销毁,时间是延迟的时间+音频的长度时间
GameObject.Destroy(obj,delay+clip.length);
}
{
//获得音频
AudioClip clip = Resources.Load<AudioClip>(path);
//新建对象
GameObject obj = new GameObject(path+":"+Time.time);
//把调用该方法的脚本设置为父类
obj.transform.parent = parent;
obj.transform.localPosition = pos;
//添加播放组件,并播放
AudioSource source = obj.AddComponent<AudioSource>();
//设置播放的音频
source.clip = clip;
//设置播放的模式
source.spatialBlend = is3D ? 1:0;
//是否在运行时就播放
source.playOnAwake = false;
//播放是否延迟
if(delay>0)
source.PlayDelayed(delay);
else
source.Play();
//在播放完成后就销毁,时间是延迟的时间+音频的长度时间
GameObject.Destroy(obj,delay+clip.length);
}
本文介绍了一个用于Unity游戏开发的实用方法,通过该方法可以在游戏中动态加载并播放音频文件。此方法支持设置音量、3D效果、播放位置等参数,并能够实现延迟播放及播放结束后自动销毁播放对象。
1244

被折叠的 条评论
为什么被折叠?



