Unity AudioSource播放事件监听
来源:互联网 发布:uuu网络加速器 编辑:程序博客网 时间:2024/05/19 14:36
恩恩,装装逼,其实不是我写的哈哈哈
这个东西放在你要监听的AudioSource组件的Object下面,当声音播放结束之后会有事件发出来,就可以在声音播放结束后搞事情(写方法)了。
using System;using UnityEngine;/// <summary>/// AudioSource的播放状态监听,包含一个AudioSource公共成员./// 使用方法:/// AudioEvent ae =AudioEvent.AddComponentToGameObject(t1.gameObject);/// ae.audioSource.clip = clip1;//自己控制赋值/// ae.EventPlayStart += OnEventPlayStart;/// ae.EventPlayEnd += OnEventPlayEnd;/// ae.audioSource.Play();/// </summary>class AudioEvent : MonoBehaviour{ /// <summary> /// 这个脚本所在的物体上的audioSource /// </summary> public AudioSource audioSource; /// <summary> /// 播放开始事件 /// </summary> public event Action<AudioEvent> EventPlayStart; /// <summary> /// 播放结束事件 /// </summary> public event Action<AudioEvent> EventPlayEnd; /// <summary> /// 监控播放状态 /// </summary> bool _lastPlayStatus; /// <summary> /// 往一个物体上添加这个事件监听类 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static AudioEvent AddComponentToGameObject(GameObject obj) { AudioEvent com = obj.GetComponent<AudioEvent>(); if (com == null) { com = obj.AddComponent<AudioEvent>(); } return com; } void Awake() { //如果没有这个AudioSource东西那就要添加一个 audioSource = gameObject.GetComponent<AudioSource>(); if (audioSource == null) { audioSource = gameObject.AddComponent<AudioSource>(); audioSource.loop = false; audioSource.Stop(); audioSource.playOnAwake = false; } _lastPlayStatus = false; } /// <summary> /// 监测一下当前播放状态 /// </summary> private void UpdatePlaySstatus() { if (_lastPlayStatus == false && audioSource.isPlaying == true) { if (EventPlayStart != null) { EventPlayStart(this);//发出事件:开始播放 } } if (_lastPlayStatus == true && audioSource.isPlaying == false) { if (EventPlayEnd != null) { EventPlayEnd(this);//发出事件:播放停止 } } _lastPlayStatus = audioSource.isPlaying; } public void Update() { UpdatePlaySstatus(); } void OnDestoryed() { //如果被销毁了是否需要发出播放停止事件? if (_lastPlayStatus == true) { if (EventPlayEnd != null) { EventPlayEnd(this);//发出事件:播放停止 } } }}
0 0
- Unity AudioSource播放事件监听
- Unity AudioSource
- Unity 监听第一次进入播放状态的事件
- 【u3d开发】Unity3d AudioSource如何监听播放完成并处理逻辑
- Unity声音-音源组件AudioSource
- Unity键盘鼠标监听事件
- AudioSource声音播放的静态方法
- Unity动画播放结束事件
- 监听UIWebView点击视频播放的事件
- ios音乐播放耳机监听事件
- Unity NGUI添加事件监听(转摘)
- Unity3D-启动unity事件,切换平台监听
- unity中关于Animation和AudioSource的用法
- 【Unity&事件】事件监听响应的几种方法分析研究
- unity 动画机animator 播放完毕状态监听
- iOS MPMoviePlayerController播放视频及添加监听事件
- Exoplayer+Exomedia之玩转视频播放事件监听
- 【NGUI】Unity中给NGUI添加监听事件,Button,Toggle
- Java对象的序列化与反序列化
- WebStudy00_HTML+CSS
- WebStudy01_JavaScript
- 51Nod 1049 最大子段和
- column命令+pagesize命令+linesize命令+ttitle命令+btitle命令+break命令/comput命令
- Unity AudioSource播放事件监听
- WebStudy02_jQuery
- java.lang.Exception: No tests found matching Method test5(com.crosudd.test.TestMybatis) from org.jun
- ros中常见各坐标系之间衔接关系
- iOS UITableView 使用总结
- WebStudy03_HTML5+CSS3
- CodeForces 768C Jon Snow and his Favourite Number 暴力 空间换时间
- k8s kubernetes 高可用https and http集群实战 HA
- WebStudy04_AngularJS