示例#1
0
        public void SetAnimationParamter(string animationName, AnimationControlParamter paramter)
        {
            //获取所有动画片段
            AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
            for (int i = 0; i < clips.Length; i++)
            {
                if (clips[i].name == animationName)
                {
                    if (paramter.bLoop)
                    {
                        clips[i].wrapMode = WrapMode.Loop;
                    }
                    else
                    {
                        clips[i].wrapMode = WrapMode.Default;
                    }
                }
            }
#if UNITY_EDITOR
            UnityEditor.Animations.AnimatorController ac = animator.runtimeAnimatorController as UnityEditor.Animations.AnimatorController;

            //获取状态机
            UnityEditor.Animations.AnimatorStateMachine asm = ac.layers[0].stateMachine;
            for (int i = 0; i < asm.states.Length; i++)
            {
                UnityEditor.Animations.ChildAnimatorState cs = asm.states[i];
                if (cs.state.name == animationName)
                {
                    cs.state.speed = paramter.timeScale;
                }
            }
#endif
        }
示例#2
0
        public AnimationControlParamter GetAnimationParamter(string animationName)
        {
            AnimationControlParamter paramter = new AnimationControlParamter();

            AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
            for (int i = 0; i < clips.Length; i++)
            {
                if (clips[i].name == animationName)
                {
                    if (clips[i].wrapMode == WrapMode.Loop)
                    {
                        paramter.bLoop = true;
                    }
                    else
                    {
                        paramter.bLoop = false;
                    }
                    break;
                }
            }
#if UNITY_EDITOR
            UnityEditor.Animations.AnimatorController ac = animator.runtimeAnimatorController as UnityEditor.Animations.AnimatorController;
            //获取状态机
            UnityEditor.Animations.AnimatorStateMachine asm = ac.layers[0].stateMachine;
            for (int i = 0; i < asm.states.Length; i++)
            {
                UnityEditor.Animations.ChildAnimatorState cs = asm.states[i];
                if (cs.state.name == animationName)
                {
                    paramter.timeScale = cs.state.speed;
                    break;
                }
            }
#endif
            return(paramter);
        }