private void SwitchClip(MorphAnimationClip clip) { _currentClip = clip; if (!_currentClip.Valid) { _updateAnimation = null; MorphDebug.LogError("动画剪辑 " + _currentClip.Name + " 是无效的!", gameObject); return; } if (!_currentClip.Eligible) { _updateAnimation = null; MorphDebug.LogError("动画剪辑 " + _currentClip.Name + " 无法播放,可能其并未拥有至少两个关键帧!", gameObject); return; } _playIndex = 0; _playLocation = 0; if (_currentClip.TransitionClip != -1 && Clips[_currentClip.TransitionClip].Valid && Clips[_currentClip.TransitionClip].Eligible) { _updateAnimation = UpdateAnimationTransition; } else { _updateAnimation = UpdateAnimationLoop; } EventCallBack(_currentClip.Keyframes[_playIndex]); }
/// <summary> /// 切换动画状态,Change animation state /// </summary> /// <param name="state">要切换到的动画剪辑的名称,Animation clip name</param> public void SwitchState(string state) { if (_skinnedMeshRenderer == null) { _updateAnimation = null; MorphDebug.LogError("物体丢失了 SkinnedMeshRenderer 组件!", gameObject); return; } MorphAnimationClip clip = Clips.Find((c) => { return(c.Name == state); }); if (clip != null) { SwitchClip(clip); } }
private void Start() { if (Clips.Count <= 0) { _updateAnimation = null; MorphDebug.LogError("当前不存在至少一个动画剪辑!", gameObject); return; } _skinnedMeshRenderer = GetComponent <SkinnedMeshRenderer>(); if (_skinnedMeshRenderer == null) { _updateAnimation = null; MorphDebug.LogError("物体丢失了 SkinnedMeshRenderer 组件!", gameObject); return; } SwitchClip(Clips[DefaultClipIndex]); }