Unity 최종 프로젝트 - 27 (Behavior Tree Editor 제작-5)

이준호·2024년 2월 19일
0
post-custom-banner

📌 Unity 최종 프로젝트



📌 Behavior Tree Graph View Editor 제작






➔ Runtime View Effect

  • NodeView.cs 에서 Node의 State(상태)에 따라 AddToClassList 로 상태를 추가하는 메서드(UpdateState) (메서드 시작시 초기화 후 추가)

  • BehaviorTreeView.cs 에서 노드뷰를 순회하며 UpdateState 메서드를 실행하는 메서드(UpdateNodeStates)

  • BehaviorTreeEditor.cs 에서 OnInspectorUpdate(초당 10번정도 에디터상에서 호출)을 통해 트리뷰의 UpdateNodeStates 메서드 호출

  • NodeView.uxml

    • #node-state 추가
  • NodeViewStyle.uss

    • #node-state
      • Position
        • Absolute
        • Left, Top, Right, Bottom => 0px
      • Background
        • Color => Red
        • Color is Unset (기본값은 꺼지게)
      • Border
        • Radius => 5px
    • #.running #node-state
      • Background
        • Color => Yellow
    • #.success #node-state
      • Background
        • Color => Blue
    • #.failure #node-state
      • Background
        • Color => Red





Add Code






NodeVIew.cs

    // 런타임 중 노드 상태별 업데이트
    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;
            }
        }
    }



BehaviorTreeView.cs

    public void UpdateNodeStates()
    {
        nodes.ForEach(n =>
        {
            NodeView view = n as NodeView;
            view.UpdateState();
        });
    }



BehaviorTreeEditor.cs

    // 에디터 창에서 초당 10번 정도 호출되는 메서드
    private void OnInspectorUpdate()
    {
        _treeView?.UpdateNodeStates();
    }











📌 출저

TheKiwiCoder

profile
No Easy Day
post-custom-banner

0개의 댓글