U1L14-3——代码控制音频源

音频源详细参数介绍在这里:AudioSource​,此处为如何在脚本里控制音频源

本章代码关键字

1
2
3
4
5
6
7
8
AudioSource                    //音频源控件的类
AudioClip //代表音频文件的类
audioSource.isPlaying //检测音频源是否播放完毕的属性
audioSource.Play() //播放音频源对应的音效
audioSource.PlayDelayed() //延迟播放音频源对应的音效(填写延迟的秒数)
audioSource.Stop() //停止音效(用Play()时,会接着从头开始放)
audioSource.Pause() //暂停播放(用Play()时,会接着上次暂停的地方接着放)
audioSource.UnPause() //停止暂停,恢复播放(和暂停后Play()效果是一样的)

检测音效是否播放完毕

如果希望某一个音效播放完毕后 想要做什么事情
那就可以在Update()​生命周期中不停的检测 它的 是否播放的属性
如果是false​就代表播放完毕了

1
2
3
4
5
6
7
8
if (audioSource.isPlaying)
{
print("播放中");
}
else
{
print("播放结束");
}

动态控制音效播放

实例化挂载了音效源脚本的对象

这种方法用的较少

1
2
//这种方法用的较少
Instantiate(obj);

用一个AudioSource来控制播放不同的音效

1
2
3
4
5
6
7
public AudioClip clip;    //从外部拖入一个音频文件
void Start()
{
AudioSource aus = this.gameObject.AddComponent<AudioSource>();
aus.clip = clip;
aus.Play();
}

代码控制播放停止

播放音效

1
2
//播放音效
audioSource.Play();

延迟播放

填写延迟的秒数

1
2
//延迟播放(填写延迟的秒数)
audioSource.PlayDelayed(5);

停止音效

Play()​时,会接着从头开始放

1
2
//停止音效(用Play()时,会接着从头开始放)
audioSource.Stop();

暂停播放

Play()​时,会接着上次暂停的地方接着放

1
2
//暂停播放(用Play()时,会接着上次暂停的地方接着放)
audioSource.Pause();

停止暂停

和暂停后Play()​效果是一样的

1
2
//停止暂停(和暂停后Play()效果是一样的)
audioSource.UnPause();