Unity AudioSource播放事件监听
2017-05-09 20:49
411 查看
恩恩,装装逼,其实不是我写的哈哈哈
这个东西放在你要监听的AudioSource组件的Object下面,当声音播放结束之后会有事件发出来,就可以在声音播放结束后搞事情(写方法)了。
这个东西放在你要监听的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);//发出事件:播放停止 } } } }
相关文章推荐
- 【u3d开发】Unity3d AudioSource如何监听播放完成并处理逻辑
- Unity 监听第一次进入播放状态的事件
- mt6735 [Audio APP]如何监听手机上面音乐 /FM等多媒体声音的播放/停止的动作?
- 【Unity&事件】事件监听响应的几种方法分析研究
- ios音乐播放耳机监听事件
- 初始Unity 3D——碰撞事件的监听
- Unity动画播放结束事件
- Unity AudioSource
- 监听audio是否播放完
- Unity游戏UI框架(八):监听事件系统
- Unity API 文档之Audio Source
- unity中关于Animation和AudioSource的用法
- 小程序录音后播放wx.createInnerAudioContext停止事件坑
- {Unity} 停止播放PlayClipAtPoint播放产生的OneShotAudio音效的方法
- unity实现3D物体上的事件监听处理
- Unity3D-启动unity事件,切换平台监听
- video/audio onended(播放完成)事件
- 解决ios上audio不能自动播放的问题以及监听audio播放状态
- 【NGUI】Unity中给NGUI添加监听事件,Button,Toggle
- 监听UIWebView点击视频播放的事件