이제 추석도 끝났고 리소스도 대충 뽑을만큼은 뽑은것같아서 맘편히 코드나 두들길 시간임


2aafd136edc431a379ee98a518d6040305d1093f26593dc57725

우선 최대한 유니티 기존 그래프뷰와 동일한 UX를 제공하기위해서 해당 스타일이나 구조를 그대로 카피해서 사용할것임.


2aafd136edc431a379ed98a518d60403fae569f71925b3598e

위에 툴바는 충분히 UIElements로 제작할수있지만 Shader Graph도 IMGUI쓰고있어서 마찬가지로 IMGUI로 구현해서 붙여줬음.

하단은 GraphView인데, 처음에 VisualElement로 안두고 그냥 IMGUI랑 같은 계층에 뒀는데 왜 ShaderGraph가 궂이 VisualElement를 새로 만들어서 아래로 뒀는지 이해를 못했었음.


근데 구현하다보니 알겠더라고?


29b8c33febd176b660b8f68b12d21a1d0f9a530db6

툴바 영역만큼 마우스 포인터가 밀리는 문제가 발생함.

이유가 왜인지 찾아보니



3fae9e36ebd518986abce8954381716d2f

유니티에서 제공하는 Manipulator의 RectangleSelector 내부에서 마우스 영역의rect를 parent로 잡고있기때문임.

그래서 툴바영역이 포함된 parent VisualElement를 기준으로 계산했기때문에 툴바만큼 밀린것

그래서 Shader Graph도 상단에 VisualElement를 부모로 가지고있었던거고, 나도 마찬가지로 만들어서 #content로 이름을 박아줬음.


그 뒤로는 드래그문제도 없고 다 깔끔해서 다음작업으로



23b2d423a5d63db03ff1c6bb11f11a39feb501fe0fd89917

우선 노드의 기본적인 레이아웃을 대강 잡아봄



3fb4d72ef1923baa67bcddfb06df231d6bbc54d03fb3c9c3603c

ContextualMenuManipulator를 이용해서 우클릭 메뉴에도 노드 추가를 넣어준다.



3db2c232a5d137a860bad5a158c12a3a3f5094cbe9da1bc88dd5e8

포트 연결기능도 추가해줌.

input은 multiple을 받을수있고, output은 무조건 하나밖에 못나가도록 설정했음.

(선택지의 output에서 분기가 나뉘는건 port가 늘어나는 부분이기때문에 multi로 할 이유가없음)



2cb9d468f5dc3f8650bbd58b36867c6c9e3f

그리고 대강 생각한 구조대로 노드 레이아웃을 더 잡아준다.


두개의 영역으로 나눠서 작업해뒀는데,

상단은 Coroutine List, 하단은 단순 Action으로 구분했음. (Action이라고해서 단순 메소드는 아니고 아마 결국 코루틴일듯함)



23b2d423b79c28a8699fe8b115ef046c0b7a6434

상단의 Coroutine List는 순서대로 코루틴이 동작하게 구현할 생각임.

단 체크옵션을 둬서 스킵유무를 지정할수있도록 할 예정.

비주얼노벨의 연출쪽은 이쪽에서 담당하게 될거야.



2cb9d468f5dc3f8650bbd58b36867c6c9e3f

반대로 하단 Action에서는 각 역할에 맞는 코루틴을 실행하게 구현할예정

CHARACTER_SPEECH에서는 NPC의 대사를 출력 + 마우스 인풋까지 대기

TEACHER_SPEECH에서는 선택지를 고를때까지 계속 홀딩하면서 플로우를 묶고있을거야


우선 노드툴은 기본적인 기반공사는 끝났으니 위에 데이터를 기반으로 생각한대로 동작하기 위해서 일단 단순하게 json으로 뽑아봐야함



29b8d233e29c28a8699fe8b115ef046c61ed4c90c5

그래서 대충 뽑아보면 일단 데이터는 잘 뽑히는걸 알수있다.

다음엔 이 데이터를 기반으로 어느정도의 기본이 동작하도록 구조를 잡고, serialize를 좀 더 체계적으로 수정한뒤 node쪽도 계속 개선할 예정


WebGL Demo (빌드 변동없음)


노드툴은 오픈소스로 작업중

https://github.com/dunward/capricorn

https://github.com/dunward/capricorn

GitHub - dunward/capricorn: Unity node based visual novel plugin

Unity node based visual novel plugin. Contribute to dunward/capricorn development by creating an account on GitHub.

github.com



GitHub - dunward/capricorn: Unity node based visual novel plugin

Unity node based visual novel plugin. Contribute to dunward/capricorn development by creating an account on GitHub.

github.com