Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按顺序统一播放音频_C#_Unity3d - Fatal编程技术网

C# 按顺序统一播放音频

C# 按顺序统一播放音频,c#,unity3d,C#,Unity3d,我正在联合制作一个游戏 我有一个声音列表 当播放器与物体碰撞时,我想播放声音阵列中的第一个声音。第二次播放器与同一物体碰撞时,我想播放第二个声音,依此类推 当它到达数组的末尾时,它将再次在列表中循环 因此,我尝试对此进行循环,并调用了onTrigger2d中的函数。在球员班 但是,每次碰撞时,它总是播放列表中的第一个声音 代码如下: public class PlayNotes : MonoBehaviour { public AudioSource adSource; pu

我正在联合制作一个游戏

我有一个声音列表

当播放器与物体碰撞时,我想播放声音阵列中的第一个声音。第二次播放器与同一物体碰撞时,我想播放第二个声音,依此类推

当它到达数组的末尾时,它将再次在列表中循环

因此,我尝试对此进行循环,并调用了
onTrigger2d
中的函数。在球员班

但是,每次碰撞时,它总是播放列表中的第一个声音

代码如下:

public class PlayNotes : MonoBehaviour
{


    public AudioSource adSource;
    public AudioClip[] adClips;

    public void PlayNote()
    {
        //--1.Loop through each audio clip--
        for ( int i = 0; i < adClips.Length; i++)
        {
            //--2.Assign current audio clip to audiosource--
            adSource.clip = adClips[i];

            //--3.play audio--
            adSource.Play();

        }

    }

}
公共课堂讲稿:单一行为
{
公共音频源;
公共音频剪辑[]广告剪辑;
公开作废PlayNote()
{
//--1.循环播放每个音频片段--
对于(int i=0;i
当前您正在同时启动所有声音!请记住,您的整个循环是一次性执行的。实际上,我更希望只播放阵列中的最后一个声音


一般来说,为了不中断当前播放的声音,而是允许多个并发声音,我宁愿在您的用例中使用。例如,当下一次敲击已经触发下一个声音时,让一个声音结束混响等,以便它们混合在一起。如果使用它,将停止播放当前剪辑,而只播放新剪辑

然后简单地为当前播放的剪辑索引添加一个计数器,如

public class PlayNotes : MonoBehaviour
{
    public AudioSource adSource;
    public AudioClip[] adClips;

    // Index of the currently played sound
    private int index;

    public void PlayNote()
    {  
        // Play current sound
        // I would rather use PlayOneShot in order to allow multiple concurrent sounds
        adSource.PlayOneShot(adClips[index]);

        // Increase the index, wrap around if reached end of array
        index = (index + 1) % adClips.Length;
    }  
}

不要在图像文件中共享您的代码,我对此不熟悉,谢谢!非常感谢你!谢谢你的时间!这对我帮助很大