如何统一循环播放音频?
How to loop an audio in unity?
我在 Unity 上编写游戏项目时遇到无法在主菜单中无限播放音频的问题。
问题是曲目只播放一次(同时停留在菜单中),当我需要重复播放直到玩家离开菜单时。
这是我启用音乐的代码部分。我为此使用 AudioClip 和 AudioSource。
public AudioClip menu;
private AudioSource audio;
void Start() {
...
audio = GetComponent<AudioSource>();
audio.loop = true;
audio.PlayOneShot(menu);
...
}
public AudioClip menu;
private AudioSource Audio;
void Start()
{
Audio = GetComponent<AudioSource>();
Audio.clip = menu;
Audio.loop = true;
Audio.Play();
}
如果您在编辑器的 AudioSource 组件中选中 Loop 选项,它应该可以工作。如果没有,你搞砸了。还有另一种方法,你可以像这样循环它。
private AudioSource audio;
void Start()
{
StartCoroutine(LoopAudio());
}
IEnumerator LoopAudio()
{
audio = GetComponent<AudioSource>();
float length = audio.clip.length;
while(true)
{
audio.Play();
yield return new WaitForSeconds(length);
}
}
我在 Unity 上编写游戏项目时遇到无法在主菜单中无限播放音频的问题。
问题是曲目只播放一次(同时停留在菜单中),当我需要重复播放直到玩家离开菜单时。
这是我启用音乐的代码部分。我为此使用 AudioClip 和 AudioSource。
public AudioClip menu;
private AudioSource audio;
void Start() {
...
audio = GetComponent<AudioSource>();
audio.loop = true;
audio.PlayOneShot(menu);
...
}
public AudioClip menu;
private AudioSource Audio;
void Start()
{
Audio = GetComponent<AudioSource>();
Audio.clip = menu;
Audio.loop = true;
Audio.Play();
}
如果您在编辑器的 AudioSource 组件中选中 Loop 选项,它应该可以工作。如果没有,你搞砸了。还有另一种方法,你可以像这样循环它。
private AudioSource audio;
void Start()
{
StartCoroutine(LoopAudio());
}
IEnumerator LoopAudio()
{
audio = GetComponent<AudioSource>();
float length = audio.clip.length;
while(true)
{
audio.Play();
yield return new WaitForSeconds(length);
}
}