Unity/개발연습

[Unity] Behaviour Tree Editor 제작기 - 2

민트초밥 2024. 8. 27. 14:57

지난번에 ScriptableObject가 아닌 다른 방식으로 저장하려고 json이나 yaml 파일로 저장하는 방식도 구현해봤는데 원하는 기능을 만들기가 힘들어서 다시 ScriptableObject 방식으로 돌아왔다.

 

이전에는 ScriptableObject 하위에 ScriptableObject가 있던 구조가 문제였던거라 그 부분을 제거했다.

[CreateAssetMenu(fileName = "New Behaviour Tree", menuName = "ScriptableObjects/Behaviour Tree", order = 1)]
public class BehaviourTree : ScriptableObject 
{
}

 

 

 

 

각각의 Node들은 BehaviourNode를 상속 받는 구조

public BehaviourNode CreateNode<T>() where T : BehaviourNode
{
    string guid = System.Guid.NewGuid().ToString();

    BehaviourNode newNode = (BehaviourNode)Activator.CreateInstance(typeof(T), guid);

    NodeList.Add(newNode);
    EditorUtility.SetDirty(this);

    return newNode;
}

public class RootNode : BehaviourNode
{
    public RootNode(string guid) : base(guid) {  }
}

public class CompositeNode : BehaviourNode
{
    public CompositeNode(string guid) : base(guid) {  }
}

public class DecoratorNode : BehaviourNode
{
    public DecoratorNode(string guid) : base(guid) {  }
}

public class ActionNode : BehaviourNode
{
    public ActionNode(string guid) : base(guid) {  }
}

 

 

 

 

Node들은 마우스 우클릭을 통해 생성할 수 있다.

 

 

 

 

 

Node마다 가지고 있는 Input, Output Port가 다르고, 색으로 구분할 수 있게 만들었다.

하지만 아직은 테스트를 더 해봐야되서 모양은 달라질 것 같다.

 

 

반응형