中级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函数:

如图所示,当我们选用上面的函数后,点击将会变成播放停止不断依次触发的方式。

Ringo

CRI Middleware Global Expansion Group

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据