每次触发时播放随机声音

时间:2018-06-26 01:03:45

标签: c# unity3d

我有一个游戏,当用户向右或向左击中自己时,会发出声音,例如oph,ouch,Oh No,等等。我希望每次都是随机声音(随机选择)。

这是我们确定声音名称的代码段。在以下片段中, hit1 是声音名称,其中之一(由Elements确定)。此代码运行良好。该代码来自“ controller.cs”

注意:在Unity内部,_Manager Prefab(_Manager/Audios Manager Script/Music Clips/Elements[Audio Clip, Sound Name, Volume])中有一个区域,该区域列出了此声音名称和其他任何声音名称。

else 
{
    if (!iFly && !iJump)
    {
        animationManager.animationState = animationManager.TurnRight;
        AudiosManager.instance.PlayingSound("hit1");
    }
}

我一直在尝试这样做,但是通过在Random()中列出其余的声音名称"hit1","hit2","hit3","hit4"并不能正常工作,就像Random("hit1","hit2","hit3","hit4")希望它能正常工作一样。但是,当然没有用。

好的,这是现在的代码,它不起作用。

else 
{
    if (!iFly && !iJump)
    {
        animationManager.animationState = animationManager.TurnRight;
        AudiosManager.instance.PlayingSound(Random("hit1","hit2","hit3","hit4"));
    }
}

为澄清起见,负责这一部分的代码实际上只是这AudiosManager.instance.PlayingSound("hit1");。我可能是错的。

1 个答案:

答案 0 :(得分:1)

已解决
我不得不将public string hits;放在public class Controller : MonoBehaviour下。像吼叫

public class Controller : MonoBehaviour {

    public string hits;  

这就是现在的代码

} else {
            if (!iFly && !iJump){
                string[] hits = { "hit1", "hit2", "hit3", "hit4", "hit5" };  
                animationManager.animationState = animationManager.TurnRight;
                AudiosManager.instance.PlayingSound(this.hits = hits[Mathf.FloorToInt (Random.Range(0,5))]);
            }
        }

因此,正如您所看到的,我添加了此string[] hits = { "hit1", "hit2", "hit3", "hit4", "hit5" };来定义我的字符串,可以定义任意数量的字符串,并且还添加了此this.hits = hits[Mathf.FloorToInt (Random.Range(0,5))]来每次调用随机字符串。

感谢所有在此过程中尝试帮助我的人!