using UnityEngine; public class Myscript01 : MonoBehaviour { #region --变量定义 private Animator animator; private AnimationClip[] clips; #endregion #region --系统函数 private void Start() { animator = this.GetComponent(); clips = animator.runtimeAnimatorController.animationClips; AnimationClip _clip = clips[0]; AddAnimationEvent(animator, _clip.name, "StartEvent", 0); AddAnimationEvent(animator, _clip.name, "HalfEvent", _clip.length* 0.5f); AddAnimationEvent(animator, _clip.name, "EndEvent", _clip.length); } private void OnDestroy() { CleanAllEvent(); } #endregion #region --自定义函数 private void StartEvent() { Debug.Log("开始播放动画"); } private void HalfEvent() { Debug.Log("动画播放了一半"); } private void EndEvent() { Debug.Log("播放动画完毕"); } ////// 添加动画事件 /////////动画名称///事件方法名称///添加事件时间。单位:秒private void AddAnimationEvent(Animator _animator, string _clipName, string _eventFunctionName, float _time) { AnimationClip[] _clips = _animator.runtimeAnimatorController.animationClips; for (int i = 0; i<_clips.Length; i++) { if (_clips[i].name == _clipName) { AnimationEvent _event = new AnimationEvent(); _event.functionName = _eventFunctionName; _event.time = _time; _clips[i].AddEvent(_event); break; } } _animator.Rebind(); } ////// 清除所有事件 ///private void CleanAllEvent() { for (int i = 0; i关注打赏
Unity Animator动态添加事件
立即登录/注册


微信扫码登录