unity中如何播放音频的指定区间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity中如何播放音频的指定区间?相关的知识,希望对你有一定的参考价值。

比如我有一段手枪射击的音频文件,长为5秒,如何在unity中播放它的第3秒到第3.8秒这段?

参考技术A AudioSource audio = GetComponent<AudioSource>();
...//给你的AudioSource指定相应的播放片段
audio .PlayScheduled(3)追问

但是怎么指定只播放到3.8秒呢

追答

audio .SetScheduledStartTime(3);
audio .SetScheduledEndTime(3.8f);

本回答被提问者采纳

Unity音频控制(暂停停止播放)

AudioSource组件

在摄像头的属性面板中的Audio Listener,如果开启3D音效声音大小是相对于摄像机而言的。

所有游戏设计中都可以使用此方法

设置音乐、音效相关内容步骤:

(1)创建一个空物体Empty命名为Audio

(2)将Audio拖拽至MainCamera上,并且将Audio的坐标改为(0,0,0)

(3)拷入相关的音效

(4)将音效拖拽至Audio物体的Audio Source属性中的AudioClip上

注:勾选了Play On Awake时表明从开始就播放音乐(在没有代码干预的情况下)

Loop则是指循环的意思

(5)音量调节在属性面板的Volume中进行更改。

(6)创建脚本AudioOrange (防止名字重复)完成脚本内容

脚本代码即解析如下:

public class AudioOrange : MonoBehaviour

{
    AudioSource Orange;//获取AudioOrange组件

    public AudioClip audio1;

    public AudioClip auido2;//申请两个变量来为点击使释放不同的音效

    void Start()

    {
        Orange =  transform.GetComponent<AudioSource>();//完成组件的获取,为AudioOrange赋值

    }

当变量名相同是可以将它们重叠在一起

比如,可将代码改为:public AudioClip audio1,audio2;这样可以节省空间

(7)完成了音乐的放置,现在要将相关音效播放出来,完成代码如下:

  void Update()

    {
        if (Input.GetKeyDown(KeyCode.Q)) //在这里进行一个Input,如果按下Q键时,调用Audio11方法

        {
            Audio11();//调用第一个方法

        }

        if (Input.GetKeyDown(KeyCode.E)) //在这里进行一个Input,如果按下E键时,播放第一个声音

        {
            Audio22();//调用第一个方法

        }

    }

    void Audio11()//防止名字相冲突

    {
        Orange.clip = audio1;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

    void Audio22()//防止名字相冲突

    {
        Orange.clip = audio2;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

}

(8)取消AudioClip中的音乐和Loop以及从开始就播放(上方备注)

完整代码如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class AudioOrange : MonoBehaviour

{
    AudioSource Orange;//获取AudioOrange组件

    public AudioClip audio1;

    public AudioClip audio2;//申请两个变量来为点击使释放不同的音效

    void Start()

    {
        Orange =  transform.GetComponent<AudioSource>();//完成组件的获取,为AudioOrange赋值

    }

    void Update()

    {
        if (Input.GetKeyDown(KeyCode.Q)) //在这里进行一个Input,如果按下Q键时,调用Audio11方法

        {
            Audio11();//调用第一个方法

        }

        if (Input.GetKeyDown(KeyCode.E)) //在这里进行一个Input,如果按下E键时,播放第一个声音

        {
            Audio22();//调用第一个方法

        }

    }

    void Audio11()//防止名字相冲突

    {
        Orange.clip = audio1;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

    void Audio22()//防止名字相冲突

    {
        Orange.clip = audio2;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

}

播放停止暂停

(1)创建一个新的脚本AudioApple,第一仍然是获取Orange组件再进行赋值。

代码如下:

public class AudioApple : MonoBehaviour

{
    AudioSource Orange;//获取AudioOrange组件

    void Start()

    {
        Orange = transform.GetComponent<AudioSource>();//对Orange组件进行赋值

    }

(2)将需要的音效重新拖拽至AudioClip中,并且勾选Play On Awake和Loop

完整代码展示:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class AudioApple : MonoBehaviour

{
    AudioSource Orange;//获取AudioOrange组件

    void Start()

    {
        Orange = transform.GetComponent<AudioSource>();//对Orange组件进行赋值

    }

    void Update()

    {
        if (Input.GetKeyDown(KeyCode.R))

        {
            Orange.Stop();//当按下R键,音乐停止,点击U时重头开始播放音乐

        }

        if (Input.GetKeyDown(KeyCode.T))

        {
            Orange.Pause();//当按下T键,音乐暂停

        }

        if (Input.GetKeyDown(KeyCode.U))

        {
            Orange.Play();//当按下U键,音乐继续播放

        }

    }

}

注明:所有音乐文档需要放到属性面板中合适的位置。
————————————————
版权声明:本文为CSDN博主「qq_42610450」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42610450/article/details/106899662

以上是关于unity中如何播放音频的指定区间?的主要内容,如果未能解决你的问题,请参考以下文章

如何统一播放音频

Unity 播放音频文件

Unity - 简单实现音频管理系统

Unity - 音频文件在 iPhone 和 iPad 上播放不佳

如何在iphone中同时播放音频和视频

音频不会在 Unity 中的实例化对象上播放