Files
MetalGear2D.Unity/Assets/Scripts/AI/BehaviorTree/AiBehavior.cs
T

43 lines
1.0 KiB
C#
Raw Normal View History

2025-05-13 05:19:58 +03:00
using UnityEngine;
using System.Collections;
public enum BehaviorStatus {
Invalid,
Success,
Fail,
Running
};
public abstract class AiBehavior : MonoBehaviour {
public string behaviorName;
protected virtual void OnBegin(AiBlackboard blackboard) { }
protected virtual void OnEnd(AiBlackboard blackboard) { }
protected abstract BehaviorStatus OnExecute(AiBlackboard blackboard);
private BehaviorStatus _state = BehaviorStatus.Invalid;
public BehaviorStatus State {
get { return _state; }
}
public bool Running {
get { return _state == BehaviorStatus.Running; }
}
public BehaviorStatus Tick(AiBlackboard blackboard) {
if (_state != BehaviorStatus.Running) {
OnBegin(blackboard);
}
_state = OnExecute(blackboard);
if (_state == BehaviorStatus.Running) {
_state = BehaviorStatus.Success;
}
if (_state != BehaviorStatus.Running) {
OnEnd(blackboard);
}
return _state;
}
}