Example #1
0
        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]);
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        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]);
        }