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# 使用PlayOneShot时如何停止音频_C#_Unity3d_Audio - Fatal编程技术网

C# 使用PlayOneShot时如何停止音频

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

所以现在我有一个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 <--

        }
     }
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。修改我的答案来回答你的第一个评论。