protected override void UpdateEx() { if (Reslut == BehaviorState.Running) { int count = _list.Count; if (_target == null) { int index = Random.Range(0, count); _target = _list[index]; } switch (_target.Behave(Entity)) { case BehaviorState.Running: case BehaviorState.Finish: Reslut = BehaviorState.Running; break; case BehaviorState.Success: Reslut = BehaviorState.Finish; break; case BehaviorState.Failure: case BehaviorState.Reset: Reslut = BehaviorState.Failure; LogUtil.LogUtility.PrintError("[BTRandom]BTRandom execute failure!"); break; default: Reslut = BehaviorState.Failure; LogUtil.LogUtility.PrintError("[BTRandom]BTRandom execute failure!"); break; } } }
public void Update() { if (_enable && _entity != null && (_root.Reslut == BehaviorState.Reset || _root.Reslut == BehaviorState.Running)) { BehaviorState reslut = _root.Behave(_entity); switch (reslut) { case BehaviorState.Reset: break; case BehaviorState.Failure: break; case BehaviorState.Running: break; case BehaviorState.Success: break; default: _enable = false; LogUtil.LogUtility.PrintError("[BehaviorTree]error state."); break; } } }
protected sealed override void Update(float interval) { if (Reslut == BehaviorState.Running) { UpdateEx(interval); } else if (Reslut == BehaviorState.Finish) { if (_nextNode == null) { Reslut = BehaviorState.Success; return; } if (_nextNode != null && _nextNode.Behave(Entity, interval) == BehaviorState.Success) { Reslut = BehaviorState.Success; } } }