대화로직 수정중

This commit is contained in:
2026-06-22 11:32:17 +09:00
parent 8c764be378
commit 3ff479e357
13 changed files with 636 additions and 8 deletions

View File

@@ -7,6 +7,9 @@ public class DialogPlayer : MonoBehaviour
{
[SerializeField] private List<DialogGroup> _dialogGroups;
[Header("Region")]
[SerializeField] private string _currentRegion; // 현재 영역(DialogGroup 이름). DialogRegion 트리거가 갱신
[Header("Dialog HUD Placement")] // 씬에서 캐릭터 위치/주변(벽 등)에 맞춰 조절
[SerializeField] private float _hudChestHeight = 1.2f; // 화자 발 기준 가슴 높이
[SerializeField] private float _hudForwardOffset = 0.5f; // 화자→플레이어 방향으로 띄울 거리
@@ -41,10 +44,24 @@ private void Awake()
public async Awaitable Play()
{
if(_dialogGroups.Count > 0)
_ = Play(_dialogGroups[0].DialogGroupName);
var groupName = ResolveGroupName();
if (groupName != null)
await Play(groupName);
}
// 현재 영역에 맞는 그룹명. 영역이 없거나 매칭 그룹이 없으면 첫 그룹으로 폴백.
private string ResolveGroupName()
{
if (!string.IsNullOrEmpty(_currentRegion) && _dialogGroupMap.ContainsKey(_currentRegion))
return _currentRegion;
return _dialogGroups.Count > 0 ? _dialogGroups[0].DialogGroupName : null;
}
// 영역 전환 (DialogRegion 트리거가 호출). 다음 Play()부터 해당 영역 대화가 재생됨.
public void SetRegion(string region) => _currentRegion = region;
public string CurrentRegion => _currentRegion;
public async Awaitable Play(string groupName)
{
if (IsPlaying) return;

View File

@@ -0,0 +1,27 @@
using UnityEngine;
// 영역 트리거. 이 콜라이더(isTrigger) 안으로 NPC(DialogPlayer 보유)가 들어오면
// 그 NPC의 현재 영역을 _regionKey로 전환한다.
// _regionKey는 해당 영역에서 재생할 DialogGroup의 이름과 일치해야 한다 (예: "Coast", "Hill").
//
// 주의: OnTriggerEnter가 동작하려면 들어오는 쪽(또는 트리거 쪽)에 Rigidbody가 있어야 하고,
// 이 오브젝트의 Collider는 Is Trigger여야 한다.
[RequireComponent(typeof(Collider))]
public class DialogRegion : MonoBehaviour
{
[SerializeField] private string _regionKey; // DialogGroup 이름과 일치
private void Reset()
{
// 컴포넌트 추가 시 편의상 트리거로 설정
var col = GetComponent<Collider>();
if (col != null) col.isTrigger = true;
}
private void OnTriggerEnter(Collider other)
{
var player = other.GetComponentInParent<DialogPlayer>();
if (player != null)
player.SetRegion(_regionKey);
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d97ada507ca166544a63c1e9d65ebdb0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: db353d4be915bfc4fac873cee55ffd1b
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 0
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 816884903bb3c4d478520286d768c304
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ec69a61f39b87d04f9449d6b1ca14f27
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,388 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
m_ObjectHideFlags: 61
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 790b4d75d92f4b0984310a268dbd952f, type: 3}
m_Name: Fairy_CatsRoom
m_EditorClassIdentifier: Unity.GraphToolkit.Editor::Unity.GraphToolkit.Editor.Implementation.GraphObjectImp
m_GraphModel:
rid: 6595524353106116630
references:
version: 2
RefIds:
- rid: -2
type: {class: , ns: , asm: }
- rid: 6595524353106116630
type: {class: GraphModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 13819889836145151562
m_Value1: 2645381255326452780
m_HashGuid:
serializedVersion: 2
Hash: 4a8e76c6951ccabf2ccc35633c48b624
m_Name:
m_GraphNodeModels:
- rid: 6595524353106116633
- rid: 6595524353106116635
- rid: 6595524353106116646
m_GraphWireModels:
- rid: 6595524353106116636
- rid: 6595524353106116647
m_GraphStickyNoteModels: []
m_GraphPlacematModels: []
m_GraphVariableModels: []
m_GraphPortalModels: []
m_SectionModels:
- rid: 6595524353106116631
m_LocalSubgraphs: []
m_LastKnownBounds:
serializedVersion: 2
x: 222
y: 84
width: 923
height: 341
m_GraphElementMetaData:
- m_Guid:
m_Value0: 14845512388065122572
m_Value1: 17804268460506216482
m_HashGuid:
serializedVersion: 2
Hash: 0c5948afdcda05ce22f82972d57715f7
m_Category: 0
m_Index: 0
- m_Guid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_HashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_Category: 0
m_Index: 1
- m_Guid:
m_Value0: 5269650743910428719
m_Value1: 257959026697812224
m_HashGuid:
serializedVersion: 2
Hash: 2f7027896e8f214900b9ed385e749403
m_Category: 2
m_Index: 0
- m_Guid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_HashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_Category: 0
m_Index: 2
- m_Guid:
m_Value0: 13678802302849805841
m_Value1: 5869810211712229956
m_HashGuid:
serializedVersion: 2
Hash: 116e289638ded4bd446211b849c17551
m_Category: 2
m_Index: 1
m_EntryPoint:
rid: 6595524353106116633
m_Graph:
rid: 6595524353106116632
- rid: 6595524353106116631
type: {class: SectionModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 13482299192089173763
m_Value1: 8100932157345530803
m_HashGuid:
serializedVersion: 2
Hash: 03df02d4aebf1abbb3831e64e04a6c70
m_Version: 2
m_Items: []
m_Title:
- rid: 6595524353106116632
type: {class: DialogGraph, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524353106116633
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 14845512388065122572
m_Value1: 17804268460506216482
m_HashGuid:
serializedVersion: 2
Hash: 0c5948afdcda05ce22f82972d57715f7
m_Version: 2
m_Position: {x: 222.2174, y: 116.434784}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList: []
m_ValueList: []
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524353106116634
- rid: 6595524353106116634
type: {class: DialogStartNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524353106116635
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_HashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_Version: 2
m_Position: {x: 430.9063, y: 86.04323}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- Speaker
- TalkText
- Gesture
- Expression
- Voice
- LineDuration
- LookAtPlayer
m_ValueList:
- rid: 6595524353106116637
- rid: 6595524353106116638
- rid: 6595524353106116639
- rid: 6595524353106116640
- rid: 6595524353106116641
- rid: 6595524353106116642
- rid: 6595524353106116643
- rid: 6595524353106116644
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524353106116645
- rid: 6595524353106116636
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 5269650743910428719
m_Value1: 257959026697812224
m_HashGuid:
serializedVersion: 2
Hash: 2f7027896e8f214900b9ed385e749403
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 14845512388065122572
m_Value1: 17804268460506216482
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 0c5948afdcda05ce22f82972d57715f7
m_UniqueId: Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title:
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_NodeModelHashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 6595524353106116637
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524353106116638
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 11400000, guid: 816884903bb3c4d478520286d768c304, type: 2}
- rid: 6595524353106116639
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: "\uC774\uACF3\uC740 \uACE0\uC591\uC774\uB4E4\uC758 \uC5B8\uB355\uC774\uC57C.
\uC5B8\uB355\uC744 \uB530\uB77C\uAC00\uBA74 \uACE0\uC591\uC774\uB4E4\uC744
\uB9CC\uB0A0 \uC218 \uC788\uC9C0."
- rid: 6595524353106116640
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116641
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116642
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116643
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 5
- rid: 6595524353106116644
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 1
- rid: 6595524353106116645
type: {class: DialogLineNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524353106116646
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_HashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_Version: 2
m_Position: {x: 806, y: 84}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- Speaker
- TalkText
- Gesture
- Expression
- Voice
- LineDuration
- LookAtPlayer
m_ValueList:
- rid: 6595524353106116648
- rid: 6595524353106116649
- rid: 6595524353106116650
- rid: 6595524353106116651
- rid: 6595524353106116652
- rid: 6595524353106116653
- rid: 6595524353106116654
- rid: 6595524353106116655
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524353106116656
- rid: 6595524353106116647
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 13678802302849805841
m_Value1: 5869810211712229956
m_HashGuid:
serializedVersion: 2
Hash: 116e289638ded4bd446211b849c17551
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_NodeModelHashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_UniqueId: Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title:
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 6595524353106116648
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524353106116649
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 11400000, guid: 816884903bb3c4d478520286d768c304, type: 2}
- rid: 6595524353106116650
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: "\uB4E3\uAE30\uB85C\uB294 \uACE0\uC591\uC774\uB4E4\uC740 \uC0DD\uC120\uC744
\uC88B\uC544\uD55C\uB2E4\uACE0 \uB4E4\uC5C8\uB294\uB370 \uB3C4\uC6C0\uC774
\uB420\uC9C0\uB3C4 \uBAB0\uB77C."
- rid: 6595524353106116651
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116652
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116653
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116654
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 5
- rid: 6595524353106116655
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524353106116656
type: {class: DialogLineNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 4f8aa53486595f34ebc1b188f88e35cd
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 2ae5ca89bbed445479d9023586f0c041, type: 3}