中级03/Unity脚本播放声音
上文中我们通过场景直接进行了声音的播放。
本文主要以脚本播放为例,介绍如何通过脚本创建一个可供界面点击播放的声音。
界面UI创建
我们希望通过创建一个UI界面按钮来通过点击按钮来播放声音,因此我们需要进行一个UI按钮的创建:
如图所示,通过在Hierarchy中空白处右键,选择UI,然后选择Button进行按钮的创建。
创建完成按钮后保存以备用。
脚本创建
我们想把音频的播放控制添加到按钮的按下触发上,因此需要编写相关代码,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CuePlay : MonoBehaviour
{
private CriAtomSource atomSrc;
void Start() {
/* CriAtomSource 获得 */
atomSrc = (CriAtomSource)GetComponent("CriAtomSource");
}
public void PlaySound() {
if (atomSrc != null) {
atomSrc.Play();
}
}
public void PlayAndStopSound() {
if (atomSrc != null) {
/* CriAtomSource 状态获得 */
CriAtomSource.Status status = atomSrc.status;
if ((status == CriAtomSource.Status.Stop) || (status == CriAtomSource.Status.PlayEnd)) {
/* 处于停止状态可以播放 */
atomSrc.Play();
} else {
/* 停止播放 */
atomSrc.Stop();
}
}
}
}
我们将完成的代码命名为CuePlay,并放置在如下图的位置:
再将代码拖入到包含音频的Object中:
设置按钮回调函数
为了让Button控制音频播放我们需要进行设置,
在添加的[Button] OnClick回调中设置CuePlay类的PlaySound函数:
完成后运行场景,在场景中点击相关的Button按钮就会播放声音。
问题以及修复
当我们不断点击Button的时候,我们发现声音会不断的进行播放,每一个都会叠加,这个方式并非我们希望达到的,更好的方式是点击第一次进行播放,第二次会停止播放,如此反复。
为了修复这个问题,我们将会更改[Button] OnClick回调中设置CuePlay类的PlaySound函数:
如图所示,当我们选用上面的函数后,点击将会变成播放停止不断依次触发的方式。