Audio 找到一个可靠的触发器来工作

Audio 找到一个可靠的触发器来工作,audio,unity3d,triggers,unityscript,Audio,Unity3d,Triggers,Unityscript,我不明白为什么我的声音触发器不工作。我创建了一个游戏对象并添加了一个音频源(在音频源上,我检查了Wake上的播放和循环。然后我添加了一个球体碰撞器(我检查了Is Trigger)。最后我添加了脚本并将声音片段添加到inspector中。Unity还说:“场景中有2个音频监听器。”我几乎没有检查所有的音频监听器,但它仍然说,我做错了什么 下面是我的代码: #pragma strict var WalkAudio:AudioClip; var OutCry:AudioClip; fu

我不明白为什么我的声音触发器不工作。我创建了一个游戏对象并添加了一个音频源(在音频源上,我检查了Wake上的
播放
循环
。然后我添加了一个球体碰撞器(我检查了
Is Trigger
)。最后我添加了脚本并将声音片段添加到inspector中。Unity还说:
“场景中有2个音频监听器。”
我几乎没有检查所有的音频监听器,但它仍然说,我做错了什么

下面是我的代码:

 #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;
     }

 }
正如你所说:

我几乎检查了所有的音频侦听器

必须启用连接到
主摄像头的组件
AudioListener
。可能您使用了
LoadLevelAdditional
,因此您有两个摄像头和两个
AudioListener
组件,每个组件上都有一个。请确保此附加摄像头和任何其他游戏对象都应该有此组件NTE已禁用

此外,在运行时,您还可以在
层次结构
窗口搜索栏中使用此选项搜索连接了
AudioListener
组件的组件

t:AudioListener
这应该会对您有所帮助。还可以使用
Debug.Log
再次检查
OnControllerColliderHit
函数调用和
Audio.clip
在赋值后不为空。是否需要在
更新中播放声音

此外,由于性能成本,您应该将此行从
Update
移到
Start
函数:

var Audio= gameObject.GetComponent(AudioSource);

并在整个脚本中使用此
Audio
变量。

1.可能有一个音频侦听器连接到主摄像机。2.检查您的音频剪辑是否为3D声音。如果是3D声音,则当您的对象远离摄像机时可能听不到。因此,请将其设置为2D音频剪辑。