RaZ*_*RaZ 3 c# audio unity-game-engine
所以目前我有一个8秒长的音频剪辑。但是,我希望能够在发生特定情况时停止播放。像这样:
private AudioSource soundPlayer2D;
private AudioClip sound;
void Start(){
GameObject new2DsoundPlayer = new GameObject ("2DSoundPlayer");
soundPlayer2D = new2DsoundPlayer.AddComponent<AudioSource> ();
new2DsoundPlayer.transform.parent = transform;
}
void Update() {
if(shouldPlayAudio){
soundPlayer2D.PlayOneShot (sound, fxVolumePercentage * allVolumePercentage);
} else if(shouldStopAudio){
//Stop Audio <--
}
}
Run Code Online (Sandbox Code Playgroud)
编辑1:注意,我只想停止特定的音频剪辑,而不是音频源
使用时您无法停止音频PlayOneShot。就像玩和忘了功能。当然,您可以使Unity的音频系统静音,但这不是一个好的解决方案。
您需要改为使用播放功能。只需将AudioClip分配给AudioSource,然后播放即可。现在可以使用停止功能将其停止。
private AudioSource SoundPlayer2D;
private AudioClip sound;
Run Code Online (Sandbox Code Playgroud)
播放之前,将AudioClip分配给AudioSource
SoundPlayer2D.clip = sound;
Run Code Online (Sandbox Code Playgroud)
现在,您可以播放
SoundPlayer2D.Play();
Run Code Online (Sandbox Code Playgroud)
并停止它:
SoundPlayer2D.Stop();
Run Code Online (Sandbox Code Playgroud)
这是从来没有决定什么时候打一个音频一个好主意boolean变量。请勿执行此操作,因为您会尝试在一个帧中多次播放音频,从而导致音频无法播放等问题。
您需要将其放入播放和停止音频的功能中。
像这样:
public void playMyAudio(AudioClip clipToPlay)
{
SoundPlayer2D.clip = clipToPlay;
SoundPlayer2D.Play();
}
public void stopMyAudio()
{
SoundPlayer2D.Stop();
}
Run Code Online (Sandbox Code Playgroud)
和soundPlayer2D应该专门用于播放声音AudioClip吗?
不。除非您需要同时播放多个音频,否则不必这样做。播放音频源(soundPlayer2D)片段AudioClip之前,您始终可以将其更改为另一个 。