C# 使用PlayOneShot时如何停止音频
所以现在我有一个8秒长的音频剪辑。然而,我希望能够阻止它从发挥时,具体的事情发生。大概是这样的:C# 使用PlayOneShot时如何停止音频,c#,unity3d,audio,C#,Unity3d,Audio,所以现在我有一个8秒长的音频剪辑。然而,我希望能够阻止它从发挥时,具体的事情发生。大概是这样的: private AudioSource soundPlayer2D; private AudioClip sound; void Start(){ GameObject new2DsoundPlayer = new GameObject ("2DSoundPlayer"); soundPlayer2D = new2DsoundPlayer.AddComponen
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 <--
}
}
public void playMyAudio(AudioClip clipToPlay)
{
SoundPlayer2D.clip = clipToPlay;
SoundPlayer2D.Play();
}
public void stopMyAudio()
{
SoundPlayer2D.Stop();
}
private AudioSource soundPlayer2D;
私人音频剪辑声音;
void Start(){
GameObject new2DsoundPlayer=新游戏对象(“2DSoundPlayer”);
soundPlayer2D=new2DsoundPlayer.AddComponent();
new2DsoundPlayer.transform.parent=transform;
}
无效更新(){
如果(应播放音频){
soundPlayer2D.PlayOneShot(声音,fxVolumePercentage*所有音量Percentage);
}否则如果(应停止音频){
//停止音频当使用PlayOneShot
时,您无法停止音频。这就像播放并忘记功能。当然,您可以使Unity的音频系统静音,但这不是一个好的解决方案
您需要使用播放功能。只需将音频剪辑分配给AudioSource,然后播放它。现在可以使用停止功能停止播放
private AudioSource SoundPlayer2D;
private AudioClip sound;
播放前,将音频剪辑指定给音频源
SoundPlayer2D.clip = sound;
现在,你可以玩了
SoundPlayer2D.Play();
停下来:
SoundPlayer2D.Stop();
使用布尔值变量决定何时播放音频是一个好主意。不要这样做,因为你会遇到一些问题,例如音频无法播放,因为你试图在一个帧中播放多次
您需要将其放入一个播放和停止音频的函数中
大概是这样的:
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 <--
}
}
public void playMyAudio(AudioClip clipToPlay)
{
SoundPlayer2D.clip = clipToPlay;
SoundPlayer2D.Play();
}
public void stopMyAudio()
{
SoundPlayer2D.Stop();
}
soundPlayer2D应该只用于播放声音
音频剪辑
不需要。除非您需要同时播放多个音频,否则您不必这样做。在播放之前,您始终可以将音频源(soundPlayer2D
)剪辑更改为另一个AudioClip
。?您还应该将该属性重命名为soundPlayer2D
,以符合标准命名约定(只有类名以大写字母开头,或者对属性的方法调用看起来像对类的静态引用)。但这会停止SoundPlayer2D播放的所有音频,不是吗??,然后当我想在SoundPlayer2D上播放另一个声音时,前一个声音会在我恢复SoundPlayer2D@Draco18swhoops时播放完毕。只是一个拼写错误@Draco18sI会认为任何需要停止的剪辑都不应该使用PlayO播放neShot()
应该有一个单独的音频源。(音频源SoundPlayer2D;
仍有大写字母S)哦,好的,所以你建议我制作一个单独的音频源来播放这个特定的声音…但是还有其他选择吗?是的,我知道我不应该使用bool变量来确定何时播放音频,我只是用它作为一个例子,但是谢谢regardlessOk。修改我的答案来回答你的第一个评论。