public void Clear() { // 人物动画 AnimationManager.GetInstance().RemoveAnimation(_aniChar); _aniChar = null; _charAniSp.sprite = null; _charAniSp = null; _isCastingBomb = false; // B if (_bomb != null) { _bomb.Clear(); _bomb = null; } // 副武器 _subLayerTrans = null; for (int i = 0; i < _subWeapons.Length; i++) { _subWeapons[i].Clear(); } _subWeapons = null; // 销毁 GameObject.Destroy(_character); _character = null; // 判定点 GameObject.Destroy(_collisionPointTf.gameObject); _collisionPointTf = null; _rotatePointTf = null; // 状态机 _stateEnterFunc = null; _stateExitFunc = null; _stateUpdateFunc = null; }
protected virtual void OnStateWaitRebornEnter() { _waitRebornTime = 0; _stateUpdateFunc = StateWaitRebornUpdate; // 创建死亡特效 STGPlayerDeadEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.PlayerDeadEffect) as STGPlayerDeadEffect; effect.SetPosition(_curPos.x, _curPos.y); }
protected virtual void OnStateNormalEnter() { _stateUpdateFunc = StateNormalUpdate; _stateExitFunc = OnStateNormalExit; UpdateCollisionData(); // 射击相关 _shootTimeAfterKeyUp = Consts.MaxShootDurationAfterKeyUp + 1; _isInputShootKey = false; _isShootAvailable = true; }
protected virtual void OnStateDyingEnter() { SoundManager.GetInstance().Play("se_pldead00", 0.1f, false, true); _dyingTime = 0; _stateUpdateFunc = StateDyingUpdate; _stateExitFunc = OnStateDyingExit; // 自机暂时消失 _character.SetActive(false); // 无敌 SetInvincible(true, 20); CommandManager.GetInstance().RunCommand(CommandConsts.PlayerDying); }
protected void UpdateState() { if (_nextState != eCharacterState.Undefined && _curState != _nextState) { OnStateExit(); _stateUpdateFunc = null; _stateExitFunc = null; _curState = _nextState; OnStateEnter(); } _stateUpdateFunc(); }
public void Reset(uint siteNum, StateUpdateFunc func) { UnSet(); this.siteNum = siteNum; suf = func; if (!siteUi.ContainsKey(siteNum)) { siteUi.Add(siteNum, new List <StateUpdateFunc>()); } siteUi[siteNum].Add(func); suf = func; }
protected void OnStateAppearEnter() { _curPos = new Vector3(0, _appearStartY, 0); _appearTime = 0; _isInvincible = true; _invincibleTime = 0; _invincibleDuration = Consts.AppearInvincibleDuration; _stateUpdateFunc = StateAppearUpdate; _character.SetActive(true); _preMoveMode = _curMoveMode = ePlayerMoveMode.HighSpeed; // 显示副武器 //UpdateSubWeaponsVisible(); ResetSubWeapons(); }
public UiUpdater(uint siteNum, StateUpdateFunc func) { Reset(siteNum, func); }