수정 사항

This commit is contained in:
2026-08-09 13:58:32 +09:00
parent 8a4a001fe0
commit 120233faac
28 changed files with 3471 additions and 73 deletions

View File

@@ -10,7 +10,7 @@ namespace DinoLove.Dialog.GraphTool.Editor
// .dlg 그래프 에셋을 기존 런타임 타입(DialogGroup / DialogNode / DialogChoice)으로 변환한다.
// 생성된 DialogNode들은 서브에셋으로, DialogGroup이 메인 에셋으로 등록된다.
// 따라서 DialogPlayer는 수정 없이 임포트된 .dlg 에셋(= DialogGroup)을 그대로 사용한다.
[ScriptedImporter(24, DialogGraph.AssetExtension)] // 버전 올리면 기존 .dlg 에셋이 재임포트됨
[ScriptedImporter(25, DialogGraph.AssetExtension)] // 버전 올리면 기존 .dlg 에셋이 재임포트됨
internal class DialogGraphImporter : ScriptedImporter
{
public override void OnImportAsset(AssetImportContext ctx)
@@ -127,6 +127,7 @@ public override void OnImportAsset(AssetImportContext ctx)
dn.TalkText = GetInputPortValue<DialogText>(gn.GetInputPortByName(DialogLineNode.PORT_TALK)).Value;
dn.Gesture = GetInputPortValue<GestureData>(gn.GetInputPortByName(DialogLineNode.PORT_GESTURE));
dn.Expression = GetInputPortValue<ExpressionData>(gn.GetInputPortByName(DialogLineNode.PORT_EXPRESSION));
dn.SceneScreen = GetInputPortValue<Sprite>(gn.GetInputPortByName(DialogLineNode.PORT_SCENE_SCREEN));
dn.Pose = GetInputPortValue<Pose>(gn.GetInputPortByName(DialogLineNode.PORT_POSE));
dn.PoseTarget = GetInputPortValue<CharacterData>(gn.GetInputPortByName(DialogLineNode.PORT_POSE_TARGET));
dn.FrontSprite = GetInputPortValue<Sprite>(gn.GetInputPortByName(DialogLineNode.PORT_FRONT_SPRITE));

View File

@@ -19,6 +19,7 @@ internal class DialogLineNode : DialogGraphNode
public const string PORT_TALK = "TalkText";
public const string PORT_GESTURE = "Gesture";
public const string PORT_EXPRESSION = "Expression";
public const string PORT_SCENE_SCREEN = "SceneScreen";
public const string PORT_POSE = "Pose";
public const string PORT_POSE_TARGET = "PoseTarget";
public const string PORT_FRONT_SPRITE = "FrontSprite";
@@ -73,6 +74,13 @@ protected override void OnDefinePorts(IPortDefinitionContext context)
context.AddInputPort<GestureData>(PORT_GESTURE).WithDisplayName("Gesture").Build();
context.AddInputPort<ExpressionData>(PORT_EXPRESSION).WithDisplayName("Expression").Build();
// 무대 연출은 화면 앞뒤 순서대로 늘어놓는다: 장면 그림 → 캐릭터 포즈 → 오버레이.
// 그래프에서 위에서 아래로 읽으면 곧 뒤에서 앞 순서가 되도록.
context.AddInputPort<Sprite>(PORT_SCENE_SCREEN).WithDisplayName("Scene Screen")
.WithTooltip("배경 앞·캐릭터 뒤에 띄울 장면 그림 (설명용 컷인, 증언 장면 등). " +
"비우면 사라진다 — 여러 대사에 걸쳐 보이려면 그 대사마다 같은 그림을 지정할 것. " +
"캐릭터보다 앞에 보여야 하면 Pose를 '숨김'으로").Build();
// 포즈 — 캐릭터 그림 갈아끼우기. 어떤 그림이 뜨는지는 캐릭터 프리팹의 CharacterPoses가 정한다.
//
// Pose를 Target보다 먼저 두는 것은 읽는 순서 때문이다. "변경 없음 → (대상 없음)"은