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 }
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); }