이제 추석도 끝났고 리소스도 대충 뽑을만큼은 뽑은것같아서 맘편히 코드나 두들길 시간임
우선 최대한 유니티 기존 그래프뷰와 동일한 UX를 제공하기위해서 해당 스타일이나 구조를 그대로 카피해서 사용할것임.
위에 툴바는 충분히 UIElements로 제작할수있지만 Shader Graph도 IMGUI쓰고있어서 마찬가지로 IMGUI로 구현해서 붙여줬음.
하단은 GraphView인데, 처음에 VisualElement로 안두고 그냥 IMGUI랑 같은 계층에 뒀는데 왜 ShaderGraph가 궂이 VisualElement를 새로 만들어서 아래로 뒀는지 이해를 못했었음.
근데 구현하다보니 알겠더라고?
툴바 영역만큼 마우스 포인터가 밀리는 문제가 발생함.
이유가 왜인지 찾아보니
유니티에서 제공하는 Manipulator의 RectangleSelector 내부에서 마우스 영역의rect를 parent로 잡고있기때문임.
그래서 툴바영역이 포함된 parent VisualElement를 기준으로 계산했기때문에 툴바만큼 밀린것
그래서 Shader Graph도 상단에 VisualElement를 부모로 가지고있었던거고, 나도 마찬가지로 만들어서 #content로 이름을 박아줬음.
그 뒤로는 드래그문제도 없고 다 깔끔해서 다음작업으로
우선 노드의 기본적인 레이아웃을 대강 잡아봄
ContextualMenuManipulator를 이용해서 우클릭 메뉴에도 노드 추가를 넣어준다.
포트 연결기능도 추가해줌.
input은 multiple을 받을수있고, output은 무조건 하나밖에 못나가도록 설정했음.
(선택지의 output에서 분기가 나뉘는건 port가 늘어나는 부분이기때문에 multi로 할 이유가없음)
그리고 대강 생각한 구조대로 노드 레이아웃을 더 잡아준다.
두개의 영역으로 나눠서 작업해뒀는데,
상단은 Coroutine List, 하단은 단순 Action으로 구분했음. (Action이라고해서 단순 메소드는 아니고 아마 결국 코루틴일듯함)
상단의 Coroutine List는 순서대로 코루틴이 동작하게 구현할 생각임.
단 체크옵션을 둬서 스킵유무를 지정할수있도록 할 예정.
비주얼노벨의 연출쪽은 이쪽에서 담당하게 될거야.
반대로 하단 Action에서는 각 역할에 맞는 코루틴을 실행하게 구현할예정
CHARACTER_SPEECH에서는 NPC의 대사를 출력 + 마우스 인풋까지 대기
TEACHER_SPEECH에서는 선택지를 고를때까지 계속 홀딩하면서 플로우를 묶고있을거야
우선 노드툴은 기본적인 기반공사는 끝났으니 위에 데이터를 기반으로 생각한대로 동작하기 위해서 일단 단순하게 json으로 뽑아봐야함
그래서 대충 뽑아보면 일단 데이터는 잘 뽑히는걸 알수있다.
다음엔 이 데이터를 기반으로 어느정도의 기본이 동작하도록 구조를 잡고, serialize를 좀 더 체계적으로 수정한뒤 node쪽도 계속 개선할 예정
노드툴은 오픈소스로 작업중
https://github.com/dunward/capricorn
https://github.com/dunward/capricorn
Unity node based visual novel plugin. Contribute to dunward/capricorn development by creating an account on GitHub.
github.com
Unity node based visual novel plugin. Contribute to dunward/capricorn development by creating an account on GitHub.
github.com
고수고수