protected void ReallyDoAction(GOAction action) { if (_curAction != null) { _curAction.ActionOut(); } _curAction = action; _curAction.ActionIn(); }
public virtual void ChangeNetObj(bool isNetObj) { if (this.isNetObj != isNetObj) { this.isNetObj = isNetObj; InitAction(); //从网络对象切换到当前对象的话,做默认动作 GOAction defaultAction = GetAction(_gameObjectActionData.defaultId); ReallyDoAction(defaultAction); } }
//初始化当前对象的action public void InitAction() { _actionMap = new Dictionary <int, GOAction>(); List <ActionData> list = _gameObjectActionData.GetListActionData(); for (int i = 0; i < list.Count; i++) { GOAction action = new GOAction(_gameObjectController, list[i], isNetObj); _actionMap.Add(action.actionData.id, action); } }
public virtual bool DoAction(int actionId, ActionParam param = null) { GOAction action = GetAction(actionId); if (!action.CanDoAction()) { return(false); } if (!_curAction.CanCancelAction()) { return(false); } _curAnimatorController.DoAction(action.actionData.animName); return(true); }
public void BindAnimatorController(AnimatorController animatorController) { if (_curAnimatorController != null) { _curAnimatorController.On_ActionStateEnter -= HandleOn_ActionStateEnter; _curAnimatorController.On_AnimatorEvent -= HandleOn_AnimatorEvent; _curAnimatorController.Dispose(); } _curAnimatorController = animatorController; UpdateNameHashActionMap(); _curAnimatorController.On_ActionStateEnter += HandleOn_ActionStateEnter; _curAnimatorController.On_AnimatorEvent += HandleOn_AnimatorEvent; //强制做默认动作 ActionData actionData = _gameObjectActionData.GetActionData(_gameObjectActionData.defaultId); _curAnimatorController.animator.Play(actionData.animName, actionData.animLayer); GOAction defaultAction = GetAction(_gameObjectActionData.defaultId); ReallyDoAction(defaultAction); }
//监听动画事件,如果动画发生改变,那么当前行为改变 protected void HandleOn_ActionStateEnter(StateInfo info) { GOAction action = GetActionByAnimNameHash(info.fullNameHash); ReallyDoAction(action); }