지난번에 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가 다르고, 색으로 구분할 수 있게 만들었다.
하지만 아직은 테스트를 더 해봐야되서 모양은 달라질 것 같다.
반응형
'Unity > 개발연습' 카테고리의 다른 글
[Unity] Behaviour Tree Editor 제작기 - 4 (1) | 2024.08.30 |
---|---|
[Unity] Behaviour Tree Editor 제작기 - 3 (0) | 2024.08.30 |
[Unity] Behaviour Tree Editor 제작기 - 1 (0) | 2024.08.22 |
[Unity] 사이드 프로젝트 개발일지 (씬 전환 커스텀 에디터) (0) | 2024.07.19 |
[Unity] 사이드 프로젝트 개발일지 (이미지 퍼즐 만들기) (1) | 2024.07.03 |