一开始根本没想到要加collider,太傻了,加上collider后,可以通过模型的名字或者是加个tag来识别点击的到底是哪个模型。
又很傻的给每个模型都添加了控制音频播放脚本,被某大哥嫌弃面向对象学的太差,其实只写一个脚本就行。
场景中建一个空物体,专门用来控制音频播放。(这也是为什么之前在每个模型上都加了Audiosource,导致一开始在切换模型的时候,会同时播放好几个音频(喇叭太多了,只要一个喇叭,换喇叭里放的声音就行))
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DynamicPlayAudio : MonoBehaviour
{
public AudioClip[] audioClip;
void Start()
{
//默认播放第一个音频
this.GetComponent<AudioSource>().clip = audioClip[0];
this.GetComponent<AudioSource>().Play();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{//判断是否是点击事件
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitInfo;
if (Physics.Raycast(ray, out hitInfo))
{
//如果是一根手指触摸屏幕而且是刚开始触摸屏幕
if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began)
{
if (Input.GetTouch(0).tapCount == 1)
{//判断点击的次数
//Destroy(hitInfo.collider.gameObject);//销毁场景中的模型
if (hitInfo.collider.gameObject.tag == "Nucleus")
{
this.GetComponent<AudioSource>().clip = audioClip[1];
this.GetComponent<AudioSource>().Play();
}
if (hitInfo.collider.gameObject.tag == "Chloroplast")
{
this.GetComponent<AudioSource>().clip = audioClip[2];
this.GetComponent<AudioSource>().Play();
}
}
}
}
}
}
}
点击模型,播放对应音频。(这里需要加一个audiosource,里面放不放音频无所谓(我是放了一个初始音频))。