创新项目实训实践笔记-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();
        }
    }
    
}
©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值