Unity5.2.3版本怎么弄3D声音
1个回答
展开全部
AudioListener组件默认绑定在主摄像机上,这个组件的功能相当于耳朵,用来听声音的。
1.背景音乐
选中音乐文件,建议不勾选3D Sound选项。
在Main Camera下创建一个空物体,添加AudioSound组件,AudioClip选择要播放的音乐。
Loop必须勾选,循环播放。
勾选PlayOnAwake,场景一进来就开始播放,如果不勾选找个合适时机Play()。
2.NGUI的UIPlaySound
在摄像机直接添加个AudioSource组件,这个组件不挂任何AudioClip。(UIPlaySound将在这个组件上播放音效,在这里调整Volume能控制所有UIPlaySound的音量大小。UIPlaySound的Volume属性只控制自己的音量,最后的音量是这两个音量值相乘。)
3.碰撞触发的音效
public AudioClip AC;
OnCollisionEnter(Collision collision)
//或者OnTriggerEnter(Collider collider)
{
//被撞得物体原点发出声音(第二个参数用来设置发出声音的世界坐标,不要离AudioListener太远)
AudioSource.PlayClipAtPoint(AC, transform.localPosition);
}
4.Animation动作回调的音效
public class AnimationCallSound : MonoBehaviour
{
//防止同一个动作多次注册回调
public static Listlt;string; isHaveevent = new Listlt;string;();
//调用事件
public float EventTime;
//要播放的音效(必须绑定一个AudioSource组件)
public AudioSource AS;
void Start ()
{
if (AS == null)
Debug.LogError(没有绑定音效);
AddEvent();
//防止场景内动作相同的物体动作同步
Invoke(PlayAnim,Random.Range(0.1f,5.5f));
}
void PlayAnim()
{
animation.Play();
}
//给Animation动画注册回调事件
void AddEvent()
{
foreach (string name in isHaveevent)
{
if (animation.clip.name == name)
return;
}
AnimationEvent auidoEvent = new AnimationEvent();
auidoEvent.time = EventTime;
auidoEvent.functionName = PlayAudio;
animation.clip.AddEvent(auidoEvent);
isHaveevent.Add(animation.clip.name);
Debug.Log(add + animation.clip.name + Event!);
}
public void PlayAudio()
{
AS.Play();
}
}
1.背景音乐
选中音乐文件,建议不勾选3D Sound选项。
在Main Camera下创建一个空物体,添加AudioSound组件,AudioClip选择要播放的音乐。
Loop必须勾选,循环播放。
勾选PlayOnAwake,场景一进来就开始播放,如果不勾选找个合适时机Play()。
2.NGUI的UIPlaySound
在摄像机直接添加个AudioSource组件,这个组件不挂任何AudioClip。(UIPlaySound将在这个组件上播放音效,在这里调整Volume能控制所有UIPlaySound的音量大小。UIPlaySound的Volume属性只控制自己的音量,最后的音量是这两个音量值相乘。)
3.碰撞触发的音效
public AudioClip AC;
OnCollisionEnter(Collision collision)
//或者OnTriggerEnter(Collider collider)
{
//被撞得物体原点发出声音(第二个参数用来设置发出声音的世界坐标,不要离AudioListener太远)
AudioSource.PlayClipAtPoint(AC, transform.localPosition);
}
4.Animation动作回调的音效
public class AnimationCallSound : MonoBehaviour
{
//防止同一个动作多次注册回调
public static Listlt;string; isHaveevent = new Listlt;string;();
//调用事件
public float EventTime;
//要播放的音效(必须绑定一个AudioSource组件)
public AudioSource AS;
void Start ()
{
if (AS == null)
Debug.LogError(没有绑定音效);
AddEvent();
//防止场景内动作相同的物体动作同步
Invoke(PlayAnim,Random.Range(0.1f,5.5f));
}
void PlayAnim()
{
animation.Play();
}
//给Animation动画注册回调事件
void AddEvent()
{
foreach (string name in isHaveevent)
{
if (animation.clip.name == name)
return;
}
AnimationEvent auidoEvent = new AnimationEvent();
auidoEvent.time = EventTime;
auidoEvent.functionName = PlayAudio;
animation.clip.AddEvent(auidoEvent);
isHaveevent.Add(animation.clip.name);
Debug.Log(add + animation.clip.name + Event!);
}
public void PlayAudio()
{
AS.Play();
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询