NodeView.cs 에서 Node의 State(상태)에 따라 AddToClassList 로 상태를 추가하는 메서드(UpdateState) (메서드 시작시 초기화 후 추가)
BehaviorTreeView.cs 에서 노드뷰를 순회하며 UpdateState 메서드를 실행하는 메서드(UpdateNodeStates)
BehaviorTreeEditor.cs 에서 OnInspectorUpdate(초당 10번정도 에디터상에서 호출)을 통해 트리뷰의 UpdateNodeStates 메서드 호출
NodeView.uxml
NodeViewStyle.uss
// 런타임 중 노드 상태별 업데이트
public void UpdateState()
{
RemoveFromClassList("running");
RemoveFromClassList("success");
RemoveFromClassList("failure");
if (Application.isPlaying)
{
switch (node.state)
{
case Node.E_NodeState.Running:
if (node.started)
AddToClassList("running");
break;
case Node.E_NodeState.Success:
AddToClassList("success");
break;
case Node.E_NodeState.Failure:
AddToClassList("failure");
break;
}
}
}
public void UpdateNodeStates()
{
nodes.ForEach(n =>
{
NodeView view = n as NodeView;
view.UpdateState();
});
}
// 에디터 창에서 초당 10번 정도 호출되는 메서드
private void OnInspectorUpdate()
{
_treeView?.UpdateNodeStates();
}