2.9 KiB
2.9 KiB
Dialog Graph Tool
Communication/Dialog 시스템(DialogGroup / DialogNode / DialogChoice)을
노드 그래프로 저작하기 위한 에디터 전용 도구입니다.
Unity GraphToolkit(com.unity.graphtoolkit, experimental) 기반.
동작 개요
.wdg그래프 에셋을 노드로 편집 → 저장하면DialogGraphImporter가 기존 런타임 타입(DialogGroup+ 여러DialogNode)으로 자동 변환합니다.- 변환 결과: 메인 에셋 =
DialogGroup, 서브에셋 = 각DialogNode. DialogPlayer는 수정 없이 임포트된.wdg(=DialogGroup)를 그대로 사용합니다.
사용법
- Project 창에서 우클릭 →
Create > Communication > Dialog Graph로.wdg생성. - 더블클릭해 그래프 에디터를 엽니다.
- 노드 추가:
- Dialog Start Node : 진입점. 출력 화살표를 첫 대사 노드에 연결. (그래프당 1개)
- Dialog Line Node : 대사 1줄. Speaker/TalkText/Gesture/Expression/Voice/
LineDuration/LookAtPlayer 입력.
Choice Count = 0→ 선형.Out출력을 다음 노드로 연결(=DialogNode.Next).Choice Count = N→ 가변 N지선다.Choice Question+ 선택지마다Choice i Text(텍스트) 와Choice i →(분기 출력) 생성. 각 분기 출력을 목적지 노드에 연결(=DialogNode.Choices[i].DestinationNode).
- 저장(임포트)되면
.wdg에셋이DialogGroup이 됩니다. 이를DialogPlayer의_dialogGroups리스트에 드래그하면 끝. (그룹 이름 = 파일명.DialogPlayer.Play(groupName)으로 호출)
구성 파일 (모두 Editor 전용)
DialogGraph.cs— 그래프 타입/생성 메뉴/검증DialogGraphNode.cs— 공통 베이스(실행 포트 헬퍼)DialogStartNode.cs— 진입 노드DialogLineNode.cs— 대사 + 가변 N지선다 노드DialogText.cs— TalkText 멀티라인 입력용 래퍼 타입DialogTextDrawer.cs— DialogText를 여러 줄 TextField로 그리는 CustomPropertyDrawerDialogGraphImporter.cs— .wdg → DialogGroup/DialogNode 변환
TalkText 멀티라인
- TalkText 포트는
string이 아니라DialogText타입을 쓴다. - GraphToolkit은
[CustomPropertyDrawer]가 있는 타입을 Unity PropertyField로 렌더하므로,DialogTextDrawer가 노드의 TalkText 칸을 여러 줄(멀티라인)로 만든다. - 임포터는
DialogText.Value만 꺼내DialogNode.TalkText(string)에 넣는다 — 런타임은 영향 없음. - 높이를 더 키우려면
DialogTextDrawer의minHeight값을 조정.
메모
- GraphToolkit은 experimental(0.4.0-exp.2)이라 API가 바뀔 수 있습니다.
- 분기 출력이 비어 있으면 해당 선택지의
DestinationNode는 null이 되어 대화가 종료됩니다. - 여러 경로에서 같은 노드로 연결하면(루프 포함) 하나의
DialogNode로 합쳐집니다.