Вы должны определить поведение кнопки 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;
}
}
Я думаю, что происходит потому, что вы добавляете слушателей каждый раз, когда происходит рутина, она запускается сначала один раз, затем дважды, затем трижды и так далее.
Это тот синтаксис, который я обычно использую для добавления поведения к кнопкам пользовательского интерфейса, он прост, вы можете добавлять параметры и выглядеть чисто. Я рекомендую это.
Также, если у вас нет параметров, вы можете сделать это, и это проще.
ButtonAction.GetComponent<Button().onClick.AddListener (ToggleSound);