创新项目实训实践笔记-5
上一篇博客中我们实现了播放声音的按钮部分的操所,这次我们实现具体的播放声音的操作。
播放声音实现(播放部分)
准备工作
首先我们先录制三段音频,对应于三个物体的简介
然后我们打开unity,将音频放入unity中
将先前创建的三个展品上均加入组件Audio Source
并将对应的音频放入下图所示位置
注意将Loop的对勾点掉,避免循环播放
脚本编写
打开file物体的change_items脚本。
在Update方法中加入下面的代码
if (button_control.GetComponent<click_control>().isPlay)
{
items[num % N].GetComponent<AudioSource>().Play(0);
GameObject.Find("Button_click_manager").gameObject.GetComponent<click_control>().isPlay = false;
GameObject.Find("Button_click_manager").gameObject.GetComponent<click_control>().playIsOk();
}
检测Button_click_manager中的click_control脚本的isPlay变量,如果为true,则播放当前展示物体的音频一遍,并将isPlay变量置为false
至此,click_control脚本充实为
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class change_items : MonoBehaviour
{
public GameObject allitem;
public GameObject[] items;
public GameObject button_control;
int N=3;
int num;
int oldnum;
// Start is called before the first frame update
void Start()
{
button_control=GameObject.Find("Button_click_manager").gameObject;
oldnum = 0;
num = 0;
//N = allitem.transform.childCount;
items = new GameObject[N];
for(int i=0;i< allitem.transform.childCount; i++)
{
items[i] = allitem.transform.GetChild(i).gameObject;
}
}
// Update is called once per frame
void Update()
{
num = button_control.GetComponent<click_control>().click_num;
if (oldnum != num)
{
items[oldnum % N].SetActive(false);
items[num % N].SetActive(true);
oldnum = num;
}
if (button_control.GetComponent<click_control>().isPlay)
{
items[num % N].GetComponent<AudioSource>().Play(0);
GameObject.Find("Button_click_manager").gameObject.GetComponent<click_control>().isPlay = false;
GameObject.Find("Button_click_manager").gameObject.GetComponent<click_control>().playIsOk();
}
}
}