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中如何播放音频的指定区间?的主要内容,如果未能解决你的问题,请参考以下文章