我不明白为什么我的声音触发不起作用。我创建了一个GameObject并为其添加了一个音频源(在Audio Source上我检查了Play On Wake
和Loop
。然后我添加了一个Sphere Collider(我检查了Is Trigger
)。最后,我添加了我的脚本并将声音片段添加到了检查器中.Unity还说:"There are 2 audio listeners in the scene."
我几乎没有检查所有的音频听众,它仍然说出来,我做错了什么?
以下是我的代码:
#pragma strict
var WalkAudio:AudioClip;
var OutCry:AudioClip;
function Update (){
var Audio= gameObject.GetComponent(AudioSource);
if(Input.GetButton("Horizontal") || Input.GetButton("Vertical"))
{
Audio.Play();
}
else
{
Audio.Pause();
}
}
function OnControllerColliderHit (hit : ControllerColliderHit)
{
var Audio= gameObject.GetComponent(AudioSource);
if (hit.gameObject.tag == "templeFloor")
{
var groundType = 1;
print("Temple");
Audio.clip=OutCry;
}
else{
Audio.clip=WalkAudio;
}
}
答案 0 :(得分:1)
正如你所说:
我几乎取消选中所有音频监听器
必须启用附加到AudioListener
的组件Main Camera
。可能你使用了LoadLevelAdditive
,因此你有两个摄像头和两个AudioListener
组件,每个组件各有一个。请确保此添加剂相机和任何其他游戏对象应禁用此组件。
在运行时,您可以在AudioListener
窗口搜索栏中搜索哪个组件附加了Hierarchy
组件。
t:AudioListener
这应该会帮助你。同时使用Debug.Log
进行双重检查OnControllerColliderHit
函数调用,Audio.clip
在赋值后不为空。还需要在Update
中播放声音吗?
此外,由于性能成本的原因,您应该将此行从Update
移至Start
函数:
var Audio= gameObject.GetComponent(AudioSource);
并在整个脚本中使用此Audio
变量。