CompressedAnimationDirver getDirver(Animator animator) { CompressedAnimationDirver dirver = animator.GetComponent <CompressedAnimationDirver>(); if (!dirver) { dirver = animator.gameObject.AddComponent <CompressedAnimationDirver>(); } return(dirver); }
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) //{ // if (clip) // { // clip.SampleAnimation(animator.gameObject, stateInfo.normalizedTime); // } //} //OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { CompressedAnimationDirver dirver = getDirver(animator); dirver.DoStateLayerExit(animator, ref stateInfo); //dirver.DoStateEnter(stateInfo, getClip()); //var runner = animator.GetComponent<Animation>(); //if (runner) //{ // runner.Stop(clip.name); // //最后采样一次,确保最终状态正确 // clip.SampleAnimation(animator.gameObject, clip.length); //} }
//OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { CompressedAnimationDirver dirver = getDirver(animator); dirver.DoStateLayerEnter(animator, ref stateInfo); }