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;
}
}
不要在图像文件中共享您的代码,我对此不熟悉,谢谢!非常感谢你!谢谢你的时间!这对我帮助很大