Unity3D UI按钮需要多次单击才能播放或暂停音频

Unity3D UI按钮需要多次单击才能播放或暂停音频,unity3d,vuforia,Unity3d,Vuforia,为什么我的播放或暂停按钮需要多次单击才能播放或暂停音频?如果检测到目标,它将显示一个UI按钮,如果单击,它将播放声音,再次单击时,它将暂停,但我需要多次单击以触发代码。 有什么解决办法吗?这是我的密码 void播放声音(字符串ss) { clipTarget=(音频剪辑)Resources.Load(ss); soundTarget.clip=clipTarget; soundTarget.loop=false; soundTarget.playOnAwake=false; soundTarge

为什么我的播放或暂停按钮需要多次单击才能播放或暂停音频?如果检测到目标,它将显示一个UI按钮,如果单击,它将播放声音,再次单击时,它将暂停,但我需要多次单击以触发代码。 有什么解决办法吗?这是我的密码

void播放声音(字符串ss)
{
clipTarget=(音频剪辑)Resources.Load(ss);
soundTarget.clip=clipTarget;
soundTarget.loop=false;
soundTarget.playOnAwake=false;
soundTarget.ignoreListenerPause=true;
}
if(name==“quezon”)
{       
if(Translate.GetComponent().text==“ENGLISH”)
{
叙述者.gameObject.SetActive(true);
myGirl.gameObject.SetActive(false);
myBoy.enabled=false;

ButtonAction.GetComponent您只需定义一次按钮onClick行为。如下所示:

void Awake ()
{
    ButtonAction.GetComponent<Button>().onClick.AddListener (() => ToggleSound ());
}

private void ToggleSound ()
{
    if (soundTarget.isPlaying)
    {
        soundTarget.Pause();
        btn.image.overrideSprite = Play;
        myBoy.enabled = false;
    }
    else
    {
        soundTarget.Play();
        playSound("sounds/English");
        btn.image.overrideSprite = Pause;
        myBoy.enabled = true;
    }
}
void Awake()
{
ButtonAction.GetComponent().onClick.AddListener(()=>ToggleSound());
}
私有无效切换声音()
{
if(soundTarget.isPlaying)
{
soundTarget.Pause();
btn.image.overrideSprite=Play;
myBoy.enabled=false;
}
其他的
{
soundTarget.Play();
播放声音(“声音/英语”);
btn.image.overrideSprite=暂停;
myBoy.enabled=true;
}
}
我认为现在正在发生的是,因为每次例程发生时都会添加侦听器,它首先触发一次,然后触发两次,然后触发三次,以此类推

这是我常用的向UI按钮添加行为的语法,很简单,你可以添加参数,看起来很干净。我推荐它

如果你没有参数,你也可以这样做,而且更容易

ButtonAction.GetComponent<Button().onClick.AddListener (ToggleSound);
ButtonAction.GetComponent