Пример #1
0
        // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
        //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
        //
        //}

        // 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)
        {
            AnimatorInfo info = new AnimatorInfo();

            info.animator = animator;
            info.status   = AnimActionStatus.Exit;
            info.nameHash = stateInfo.shortNameHash;
            NotifyManager.SendNotify(NotifyType.OnAnimatorUpdate, info);
        }
Пример #2
0
    static void AddAnimatorState(AnimatorController controller, AnimatorControllerLayer currLayer, int width, int height, string pName)
    {
        for (int j = 1; j < (int)AnimatState.AnimaState_MAX; j++)
        {
            AnimatorState state = currLayer.stateMachine.AddState(((AnimatState)j).ToString(), new Vector3((j / 5 + 1) * width, j % 5 * height, 0));
            if (j == (int)AnimatState.AnimaState_IDLE)
            {
                currLayer.stateMachine.defaultState = state; //设置默认状态
            }
            AnimatorInfo info = InfoMgr <AnimatorInfo> .Instance.GetInfo(j);

            AnimationClip clip = (AnimationClip)AssetDatabase.LoadAssetAtPath(AppConst.AssetPath + "/AnimationClip/" + pName + "/" + info.name + ".anim", typeof(AnimationClip));
            controller.SetStateEffectiveMotion(state, clip);
        }
    }
        public override void Deserialize(BinaryReader binaryReader)
        {
            var transformInfoArrayLength = binaryReader.ReadInt32();

            Value.Clear();
            for (int i = 0; i < transformInfoArrayLength; i++)
            {
                var animatorInfo = new AnimatorInfo();
                animatorInfo.ID                  = binaryReader.ReadInt32();
                animatorInfo.Op                  = (EOperateAnimator_InternalOperate)binaryReader.ReadByte();
                animatorInfo.StateName           = binaryReader.ReadString();
                animatorInfo.VariableName        = binaryReader.ReadString();
                animatorInfo.VariableValue_Int   = binaryReader.ReadInt32();
                animatorInfo.VariableValue_Float = binaryReader.ReadSingle();
                animatorInfo.VariableValue_Bool  = binaryReader.ReadBoolean();
                Value.Add(animatorInfo);
            }
        }
Пример #4
0
        //----- method -----

        private void Initialize()
        {
            var animator = UnityUtility.GetOrAddComponent <Animator>(gameObject);

            if (animator == null)
            {
                return;
            }

            if (isInitialized)
            {
                return;
            }

            animator.runtimeAnimatorController = animatorController;
            animatorInfo = new AnimatorInfo(animator);

            Stop();

            Refresh();

            isInitialized = true;
        }
Пример #5
0
    static void AddTransition(AnimatorControllerLayer controllLayer)
    {
        ChildAnimatorState[] states = controllLayer.stateMachine.states;
        for (int i = 0; i < (int)AnimatState.AnimaState_MAX - 1; i++)
        {
            if (i < states.Length)
            {
                AnimatorInfo info = InfoMgr <AnimatorInfo> .Instance.GetInfo(i + 1);

                if (null == info)
                {
                    Debug.LogError("AnimatorInfo is Null");
                    continue;
                }
                AnimatorState currentState = states[i].state;
                if (info.idle == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_IDLE - 1].state, false);
                }
                if (info.walk == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_WALK - 1].state, false);
                }
                if (info.free == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_FREE - 1].state, false);
                }
                if (info.atk1 == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_ATK1 - 1].state, false);
                }
                if (info.atk2 == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_ATK2 - 1].state, false);
                }
                if (info.atk3 == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_ATK3 - 1].state, false);
                }
                if (info.skill1 == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_SKILL1 - 1].state, false);
                }
                if (info.skill2 == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_SKILL2 - 1].state, false);
                }
                if (info.skill3 == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_SKILL3 - 1].state, false);
                }
                if (info.die == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_DIE - 1].state, false);
                }
                if (info.live == 1)
                {
                    AddTransition(currentState, states[(int)AnimatState.AnimaState_LIVE - 1].state, false);
                }
            }
        }
    }
		public AnimationClip AddAnimationClip(string name)
		{
			AnimatorInfo clip = null;
			if (animationClips.TryGetValue (name, out clip)) {
				return new AnimationClip (name, clip.ClipBones, clip.ModelExtra.Clips[0]);
			}
			#if BIONICK
			Model model = Bionick.Game.Base.Game.Instance.Content.Load<Model>("Models/Animation/" + name);
			#else
			Model model = game.Content.Load<Model>("Animations/" + name);
			#endif
			if (model == null)
				return null;

			ModelExtra extra = model.Tag as ModelExtra;
			if (extra == null)
				return null;

			if (extra.Clips.Count != 1)
				return null;

			int boneCount = extra.Clips[0].Bones.Count;
			ClipBone[] clipBones = new ClipBone[boneCount];

			for(int i = 0; i < clipBones.Length; i++) {
				ModelViewerAux.AnimationClip.Bone bone = extra.Clips[0].Bones[i];
				clipBones[i] = new ClipBone(bone, FindBone(bone.Name));
			}

			clip = new AnimatorInfo ();
			clip.ModelExtra = extra;
			clip.ClipBones = clipBones;

			animationClips.Add (name, clip);

			AnimationClip info = new AnimationClip (name, clip.ClipBones, clip.ModelExtra.Clips[0]);
			return info;
		}