From dcd15573bb70b401eebf67fb0b30f4e1ee463589 Mon Sep 17 00:00:00 2001 From: nakjun Date: Thu, 9 Jul 2026 15:27:34 +0900 Subject: [PATCH] =?UTF-8?q?2026-07-09=20=EC=98=88=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/01_Scenes/Hischool_Chapter1.unity | 4 +- Assets/01_Scenes/_TestScenes/Test1.unity | 4 +- .../Communication/Dialog/DialogCondition.cs | 7 + .../Communication/Dialog/DialogPlayer.cs | 139 ++++- Assets/02_Scripts/Story/EventZone.cs | 11 +- .../02_Scripts/UI/Communication/ChoiceHud.cs | 24 +- .../Real Dinosaurs/Carnotaurus.prefab | 4 +- .../Carnotaurus/CustomAnimations/Hurt.anim | 4 +- .../Characters/Yuna_V3/Prefabs/Yuna_V3.prefab | 4 +- .../DialogGraph/Chapter1/Chapter1_Yuna1.dlg | 432 +++++++++++++ .../Chapter1/Chapter1_Yuna1.dlg.meta | 10 + .../DialogGraph/Chapter1/Chapter1_Yuna2.dlg | 273 ++++++++ .../Chapter1/Chapter1_Yuna2.dlg.meta | 10 + Assets/08_Timeline/Chapter1/TailStep.playable | 590 +++++++++++++++++- ProjectSettings/TagManager.asset | 4 +- 15 files changed, 1468 insertions(+), 52 deletions(-) create mode 100644 Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna1.dlg create mode 100644 Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna1.dlg.meta create mode 100644 Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna2.dlg create mode 100644 Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna2.dlg.meta diff --git a/Assets/01_Scenes/Hischool_Chapter1.unity b/Assets/01_Scenes/Hischool_Chapter1.unity index c9f309cf..b18f3db2 100644 --- a/Assets/01_Scenes/Hischool_Chapter1.unity +++ b/Assets/01_Scenes/Hischool_Chapter1.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23ebd53375945c339b34f137d12e73fd5fe8c957ee989471258e058f06a8a7fd -size 4107160 +oid sha256:ee8123c74b26ee7584a6dc0fc2d35bdf78c0d4c0b9ccd48a30f16ff346cf88a1 +size 4124839 diff --git a/Assets/01_Scenes/_TestScenes/Test1.unity b/Assets/01_Scenes/_TestScenes/Test1.unity index 5adfe21c..9e65a0c0 100644 --- a/Assets/01_Scenes/_TestScenes/Test1.unity +++ b/Assets/01_Scenes/_TestScenes/Test1.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dae0a79c8f7b83fed60fa1c8a3e6cf127d8d83cf4d6df417e795b58f2420a02e -size 180185 +oid sha256:ba8d346bc304e217d12abc8337cce502b5886f49fcaf68f504d9dad7b7e3ce52 +size 180461 diff --git a/Assets/02_Scripts/Communication/Dialog/DialogCondition.cs b/Assets/02_Scripts/Communication/Dialog/DialogCondition.cs index 1005bfb3..2f58bb8e 100644 --- a/Assets/02_Scripts/Communication/Dialog/DialogCondition.cs +++ b/Assets/02_Scripts/Communication/Dialog/DialogCondition.cs @@ -22,6 +22,9 @@ public class DialogCondition [Tooltip("밟았어야 하는 이벤트존 Id들 (전부 필요)")] public List RequiredZoneIds = new(); + [Tooltip("밟으면 이 대화가 비활성화되는 이벤트존 Id들 (하나라도 밟았으면 비활성화)")] + public List ExcludedZoneIds = new(); + // affectionTarget: 호감도 조건을 검사할 캐릭터 (보통 대화를 거는 NPC 자신) public bool IsMet(CharacterData affectionTarget) { @@ -45,6 +48,10 @@ public bool IsMet(CharacterData affectionTarget) if (!string.IsNullOrEmpty(zoneId) && !story.HasTriggeredZone(zoneId)) return false; + foreach (var zoneId in ExcludedZoneIds) + if (!string.IsNullOrEmpty(zoneId) && story.HasTriggeredZone(zoneId)) + return false; + return true; } } diff --git a/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs index 7b1e944a..e0620244 100644 --- a/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs +++ b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs @@ -39,6 +39,9 @@ public struct NodeEvent [Tooltip("대화가 여러 개일 때 선택 메뉴 상단에 표시할 안내 문구")] [SerializeField] private string _dialogSelectPrompt = "무슨 이야기를 나눌까?"; + [Tooltip("말을 건 뒤 대화창(선택 메뉴·첫 대사)이 뜨기까지의 딜레이(초)")] + [Min(0)] [SerializeField] private float _dialogStartDelay = 0.2f; + [Header("Dialog HUD Placement")] // 씬에서 캐릭터 위치/주변(벽 등)에 맞춰 조절 [SerializeField] private float _hudChestHeight = 1.2f; // 화자 발 기준 가슴 높이 [SerializeField] private float _hudForwardOffset = 0.5f; // 화자가 바라보는 방향으로 띄울 거리 @@ -57,6 +60,10 @@ public struct NodeEvent private readonly Dictionary _originalRotations = new(); public bool IsPlaying { get; private set; } + // 지금 실제 대사를 재생 중인 DialogPlayer (전역 1개) — 이때 다른 NPC의 Play()는 무시된다. + // 선택 메뉴만 떠 있는 단계는 여기 안 잡힌다 (그 경우는 새 NPC가 메뉴를 취소하고 시작). + private static DialogPlayer _entryInProgress; + private void Awake() { _voice = GetComponent(); @@ -73,10 +80,28 @@ private void Awake() } } + private void OnDestroy() + { + // 재생 도중 파괴(씬 전환 등)돼도 전역 잠금이 남지 않도록 + if (_entryInProgress == this) _entryInProgress = null; + } + public async Awaitable Play() { if (IsPlaying) return; + // 다른 NPC가 실제 대사를 재생 중이면 무시 — 대화 중 다른 NPC 상호작용 차단 + if (_entryInProgress != null) return; + + // 이벤트존 타임라인(컷씬) 재생 중에도 무시 — 컷씬이 NPC 루트를 직접 움직이는 동안 + // 대화를 시작하면 회전 캡처/복원이 타임라인과 충돌해서 방향이 꼬인다 + if (EventZone.IsAnyPlaying) return; + + // 다른 NPC의 선택 메뉴가 떠 있으면 먼저 취소한다. + // (취소된 쪽의 Play가 이 자리에서 HUD 숨김 등 정리를 마친 뒤에 이쪽이 시작된다) + if (ChoiceHud.Instance != null) + ChoiceHud.Instance.CancelPending(); + // 선택 메뉴가 떠 있는 동안에도 재진입을 막아야 하므로 여기서 잠근다. IsPlaying = true; try @@ -88,13 +113,33 @@ public async Awaitable Play() return; } - int index = playable.Count == 1 ? playable[0] : await SelectDialog(playable); - if (index < 0) return; // 선택 대기 중 취소됨 (씬 전환 등) + // 말을 걸면 NPC가 플레이어 쪽으로 돌아본다 — 대화창(선택 메뉴·첫 대사)이 NPC 회전을 + // 따라가므로 창도 플레이어를 향하게 된다. 원래 회전은 아래 finally에서 복원. + _originalRotations.TryAdd(transform, GetOriginalRotation(transform)); + RotateTowardPlayer(transform); + // 대화창이 바로 튀어나오지 않도록 잠깐 뜸을 들인다 (선택 메뉴·첫 대사 공통) + if (_dialogStartDelay > 0f) + { + await Awaitable.WaitForSecondsAsync(_dialogStartDelay, destroyCancellationToken); + if (_entryInProgress != null) return; // 기다리는 사이 다른 NPC의 대화가 시작됨 + } + + int index = playable.Count == 1 ? playable[0] : await SelectDialog(playable); + if (index < 0) return; // 선택 대기 중 취소됨 (다른 NPC와 대화 시작, 씬 전환 등) + + _entryInProgress = this; // 여기서부터 실제 대사 재생 — 끝날 때까지 다른 NPC 상호작용 무시 await PlayEntry(_dialogs[index]); } + catch (OperationCanceledException) + { + // 대화 도중 선택지 대기가 취소됨 (씬 전환으로 ChoiceHud 비활성화 등) — PlayEntry의 finally에서 정리됨 + } finally { + // 선택 메뉴 단계에서 돌린 회전 포함 — 대화가 어떤 경로로 끝나든(취소 포함) 원래 회전 복원 + RestoreRotations(); + if (_entryInProgress == this) _entryInProgress = null; IsPlaying = false; } } @@ -121,6 +166,7 @@ private async Awaitable SelectDialog(List playable) return playable[0]; // 선택 UI가 없으면 기존처럼 최상단 우선 // ChoiceHud는 DialogHud를 따라 배치되므로, 먼저 화자 옆에 HUD를 띄운다. + // (플레이어 쪽 회전은 Play() 시작 시 이미 걸려 있음) if (DialogHud.Instance != null) DialogHud.Instance.Show(_voice.Character, _dialogSelectPrompt, _hudChestHeight, _hudForwardOffset, _hudLateralOffset, _hudRotationOffset); @@ -186,7 +232,6 @@ private async Awaitable PlayEntry(DialogEntry entry) if (SoundManager.Instance != null) SoundManager.Instance.ClearOverrideBGM(); // 대화가 끝나면 기본 BGM으로 복귀 RestoreDefaultAnimations(); - RestoreRotations(); } } @@ -198,26 +243,53 @@ private void RestoreDefaultAnimations() _animator.CrossFade(_initialExpressionHash, 0.3f, 1, normalizedTimeOffset: 0f); } - private async Awaitable RotateTowardPlayer(Transform target) + // ── 대화 중 캐릭터 회전 ──────────────────────────────────────── + // Animator가 루트 트랜스폼까지 애니메이션하는 캐릭터(에셋 팩 공룡 등)는 + // Update 타이밍에 회전을 써도 직후 Animator 평가가 덮어써 버린다. + // 그래서 회전을 잡(Job)으로 등록해 두고, Animator 평가가 끝난 LateUpdate에서 적용한다. + private class RotationJob + { + public Transform Target; + public Quaternion Goal; // 도달할 회전 (잡 등록 시점에 확정 — 이후 플레이어가 움직여도 안 바뀜) + public Quaternion Current; // 우리가 관리하는 현재 회전 — Animator가 덮어써도 여기서 이어간다 + public bool Hold; // true면 교체될 때까지 유지(대화 중), false면 0.5초 후 종료(복원) + public float Remaining; + } + private readonly List _rotationJobs = new(); + + // 말을 건 시점의 플레이어 위치를 향해 한 번만 돈다. 이후 플레이어가 움직여도 따라가지 않지만, + // Animator가 루트 회전을 덮어쓰는 캐릭터가 있어서 그 회전값 자체는 대화가 끝날 때까지 계속 유지해 준다. + private void RotateTowardPlayer(Transform target) { if (Camera.main == null) return; - var playerCam = Camera.main.transform; + Vector3 dir = Camera.main.transform.position - target.position; + dir.y = 0f; + if (dir.sqrMagnitude < 0.0001f) return; + AddRotationJob(target, Quaternion.LookRotation(dir), hold: true); + } - float duration = 0.5f; - float elapsed = 0f; + private void RotateToRotation(Transform target, Quaternion rotation) => AddRotationJob(target, rotation, hold: false); - while (elapsed < duration) + private void AddRotationJob(Transform target, Quaternion goal, bool hold) + { + // 같은 타깃의 기존 잡이 있으면 진행 중이던 회전(Current)을 이어받아 교체 (바라보기 ↔ 복원 충돌 방지) + Quaternion current = target.rotation; + int existing = _rotationJobs.FindIndex(j => j.Target == target); + if (existing >= 0) { - Vector3 dir = playerCam.position - target.position; - dir.y = 0f; - if (dir.sqrMagnitude > 0.0001f) - { - var targetRot = Quaternion.LookRotation(dir); - target.rotation = Quaternion.Slerp(target.rotation, targetRot, 10f * Time.deltaTime); - } - elapsed += Time.deltaTime; - await Awaitable.NextFrameAsync(); + current = _rotationJobs[existing].Current; + _rotationJobs.RemoveAt(existing); } + _rotationJobs.Add(new RotationJob { Target = target, Goal = goal, Current = current, Hold = hold, Remaining = 0.5f }); + } + + // 대화 종료 시 복원할 '원래 회전' — 대화 시작 시점의 회전. + // 단, 직전 대화의 복원 잡이 아직 도는 중이면(연달아 재대화) 중간 회전값이 아니라 + // 그 잡의 목표(진짜 원래 회전)를 이어받아 누적 오차를 막는다. + private Quaternion GetOriginalRotation(Transform target) + { + int existing = _rotationJobs.FindIndex(j => j.Target == target && !j.Hold); + return existing >= 0 ? _rotationJobs[existing].Goal : target.rotation; } private void RestoreRotations() @@ -225,21 +297,32 @@ private void RestoreRotations() foreach (var kvp in _originalRotations) { if (kvp.Key != null) - _ = RotateToRotation(kvp.Key, kvp.Value); + RotateToRotation(kvp.Key, kvp.Value); } _originalRotations.Clear(); } - private async Awaitable RotateToRotation(Transform target, Quaternion targetRotation) + private void LateUpdate() { - float duration = 0.5f; - float elapsed = 0f; - while (elapsed < duration) + for (int i = _rotationJobs.Count - 1; i >= 0; i--) { - if (target == null) return; - target.rotation = Quaternion.Slerp(target.rotation, targetRotation, 10f * Time.deltaTime); - elapsed += Time.deltaTime; - await Awaitable.NextFrameAsync(); + var job = _rotationJobs[i]; + if (job.Target == null) { _rotationJobs.RemoveAt(i); continue; } + + // Animator가 이 프레임에 뭘 썼든 무시하고, 우리가 기억하는 회전에서 이어서 목표로 수렴시킨다 + job.Current = Quaternion.Slerp(job.Current, job.Goal, 10f * Time.deltaTime); + job.Target.rotation = job.Current; + + // 복원 잡만 수명이 있다 — 바라보기(Hold) 잡은 대화 종료 시 복원 잡이 교체한다 + if (!job.Hold) + { + job.Remaining -= Time.deltaTime; + if (job.Remaining <= 0f) + { + job.Target.rotation = job.Goal; // 마지막엔 목표값으로 정확히 스냅 (잔여 오차 방지) + _rotationJobs.RemoveAt(i); + } + } } } @@ -287,8 +370,8 @@ private async Awaitable PlayNode(DialogNode node) var voiceObj = CharacterVoiceObject.Find(node.Speaker); if (voiceObj != null) { - _originalRotations.TryAdd(voiceObj.transform, voiceObj.transform.rotation); - _ = RotateTowardPlayer(voiceObj.transform); + _originalRotations.TryAdd(voiceObj.transform, GetOriginalRotation(voiceObj.transform)); + RotateTowardPlayer(voiceObj.transform); } } diff --git a/Assets/02_Scripts/Story/EventZone.cs b/Assets/02_Scripts/Story/EventZone.cs index 057bb930..80b8c18d 100644 --- a/Assets/02_Scripts/Story/EventZone.cs +++ b/Assets/02_Scripts/Story/EventZone.cs @@ -24,6 +24,11 @@ public class EventZone : MonoBehaviour private bool _hasPlayed; private bool _isPlaying; + // 어떤 EventZone이든 타임라인(컷씬)이 재생 중이면 true. + // 컷씬이 NPC의 루트를 직접 움직일 수 있으므로, 재생 중엔 대화 시작을 막는 데 쓴다. + public static bool IsAnyPlaying => _playingCount > 0; + private static int _playingCount; + public string ZoneId => string.IsNullOrEmpty(_zoneId) ? name : _zoneId; // 잠글 때 켜져 있던 프로바이더만 기록해서, 해제 시 원래 꺼져 있던 것까지 켜지 않도록 한다. @@ -55,6 +60,7 @@ private void OnTriggerEnter(Collider other) } _isPlaying = true; + _playingCount++; if (_lockPlayerControl) LockPlayer(other.transform); @@ -67,7 +73,7 @@ private void OnTriggerEnter(Collider other) private void OnTimelineStopped(PlayableDirector director) { director.stopped -= OnTimelineStopped; - _isPlaying = false; + if (_isPlaying) { _isPlaying = false; _playingCount--; } UnlockPlayer(); } @@ -98,7 +104,8 @@ private void OnDestroy() if (_timeline != null) _timeline.stopped -= OnTimelineStopped; - // 존이 재생 중에 파괴돼도 플레이어가 잠긴 채 남지 않도록 + // 존이 재생 중에 파괴돼도 전역 카운트/플레이어 잠금이 남지 않도록 + if (_isPlaying) { _isPlaying = false; _playingCount--; } UnlockPlayer(); } } diff --git a/Assets/02_Scripts/UI/Communication/ChoiceHud.cs b/Assets/02_Scripts/UI/Communication/ChoiceHud.cs index e9a017a2..50578a32 100644 --- a/Assets/02_Scripts/UI/Communication/ChoiceHud.cs +++ b/Assets/02_Scripts/UI/Communication/ChoiceHud.cs @@ -47,10 +47,21 @@ private void OnDisable() _completion = null; } + // 대기 중인 선택을 취소하고 메뉴를 닫는다 (다른 NPC와 대화를 새로 시작할 때 등). + // 취소된 쪽의 await Show(...)는 OperationCanceledException으로 빠져나간다. + public void CancelPending() + { + _completion?.TrySetCanceled(); + } + public async Awaitable Show(string choiceQuestion, List choices) { if (choices == null || choices.Count == 0) return 0; + // 이전 호출이 아직 대기 중이면 먼저 취소한다 (마지막 호출이 이긴다). + // 취소된 쪽은 아래 finally까지 이 자리에서 정리를 마치고 빠져나간다. + CancelPending(); + SetQuestion(choiceQuestion); ClearRows(); for (int i = 0; i < choices.Count; i++) @@ -63,17 +74,22 @@ public async Awaitable Show(string choiceQuestion, List choic ResizeToRowCount(choices.Count); _root.SetActive(true); - _completion = new AwaitableCompletionSource(); + var completion = new AwaitableCompletionSource(); + _completion = completion; int result; try { - result = await _completion.Awaitable; + result = await completion.Awaitable; } finally { - _completion = null; - Hide(); + // 내가 아직 현재 세션일 때만 정리 — 취소 직후 다른 NPC가 새로 띄운 메뉴를 지우면 안 된다 + if (_completion == completion) + { + _completion = null; + Hide(); + } } return result; } diff --git a/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus.prefab b/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus.prefab index 144e2e37..a215683d 100644 --- a/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus.prefab +++ b/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a92cf89c60fd72c16056f4e9179c8fd4847d6ab1d0698edb4b1563bb73b11bd -size 94266 +oid sha256:ff3fab186d47f0c8a1bd2562c6abfbb1705e9255f2b48d337960645de0433022 +size 96888 diff --git a/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus/CustomAnimations/Hurt.anim b/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus/CustomAnimations/Hurt.anim index 54edccbe..b83215d6 100644 --- a/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus/CustomAnimations/Hurt.anim +++ b/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus/CustomAnimations/Hurt.anim @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9116a06765be1c76b79427c67eb23430c3d636c50e3a112260cffc991091b859 -size 1970890 +oid sha256:6d3b62210bc2a370d00d5814a48344a6dd088c0ba104e6467bf4d24db199bfc4 +size 1946155 diff --git a/Assets/04_Models/Characters/Yuna_V3/Prefabs/Yuna_V3.prefab b/Assets/04_Models/Characters/Yuna_V3/Prefabs/Yuna_V3.prefab index 60d2de71..23634c1f 100644 --- a/Assets/04_Models/Characters/Yuna_V3/Prefabs/Yuna_V3.prefab +++ b/Assets/04_Models/Characters/Yuna_V3/Prefabs/Yuna_V3.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:366692e8f1e0df774cca2bf53cb22b4550cd95461ba5cf7452d79ad7bcbefab2 -size 164021 +oid sha256:0f74d0f6f994220fcd3708eb54c489851931ce10e04b5cfef348ed6f4ec59a3f +size 164109 diff --git a/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna1.dlg b/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna1.dlg new file mode 100644 index 00000000..3e7944de --- /dev/null +++ b/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna1.dlg @@ -0,0 +1,432 @@ +%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: 12501, guid: 0000000000000000e000000000000000, type: 0} + m_Name: Chapter1_Yuna1 + m_EditorClassIdentifier: UnityEditor.dll::Unity.GraphToolkit.Editor.Implementation.GraphObjectImp + m_GraphModel: + rid: 4848514365209968918 + references: + version: 2 + RefIds: + - rid: -2 + type: {class: , ns: , asm: } + - rid: 4848514365209968918 + type: {class: GraphModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 14743801598135559126 + m_Value1: 14874423988134968649 + m_HashGuid: + serializedVersion: 2 + Hash: d6e3b4ff6f819ccc497d5523cf916cce + m_Name: Chapter1_Yuna1 + m_GraphNodeModels: + - rid: 4848514365209968921 + - rid: 4848514365209968923 + - rid: 4848514365209968938 + m_GraphWireModels: + - rid: 4848514365209968937 + - rid: 4848514365209968939 + m_GraphStickyNoteModels: [] + m_GraphPlacematModels: [] + m_GraphVariableModels: [] + m_GraphPortalModels: [] + m_SectionModels: + - rid: 4848514365209968919 + m_LocalSubgraphs: [] + m_LastKnownBounds: + serializedVersion: 2 + x: -86 + y: 92 + width: 1053 + height: 432 + m_GraphElementMetaData: + - m_Guid: + m_Value0: 11886921906498108818 + m_Value1: 1241276629292152157 + m_HashGuid: + serializedVersion: 2 + Hash: 92fda08d7ed4f6a45df5f38c84e63911 + m_Category: 0 + m_Index: 0 + - m_Guid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_HashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_Category: 0 + m_Index: 1 + - m_Guid: + m_Value0: 12075701744894930101 + m_Value1: 8354277098249585595 + m_HashGuid: + serializedVersion: 2 + Hash: b5ec06d6c18295a7bb03590cc25af073 + m_Category: 2 + m_Index: 0 + - m_Guid: + m_Value0: 18033278169514442201 + m_Value1: 7595949161354533057 + m_HashGuid: + serializedVersion: 2 + Hash: d9fdb665f31243fac1987666843b6a69 + m_Category: 0 + m_Index: 2 + - m_Guid: + m_Value0: 1372665982324540530 + m_Value1: 4413923243976307164 + m_HashGuid: + serializedVersion: 2 + Hash: 7284b72f70b00c13dc310cefcd67413d + m_Category: 2 + m_Index: 1 + m_EntryPoint: + rid: 4848514365209968921 + m_Graph: + rid: 4848514365209968920 + - rid: 4848514365209968919 + type: {class: SectionModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 17677551595292556901 + m_Value1: 13576497333533336155 + m_HashGuid: + serializedVersion: 2 + Hash: 657e0d28844753f55be24abb646869bc + m_Version: 2 + m_Items: [] + m_Title: + - rid: 4848514365209968920 + type: {class: DialogGraph, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: + - rid: 4848514365209968921 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 11886921906498108818 + m_Value1: 1241276629292152157 + m_HashGuid: + serializedVersion: 2 + Hash: 92fda08d7ed4f6a45df5f38c84e63911 + m_Version: 2 + m_Position: {x: -86.250015, y: 147.20003} + 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: 4848514365209968922 + - rid: 4848514365209968922 + type: {class: DialogStartNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: + - rid: 4848514365209968923 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_HashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_Version: 2 + m_Position: {x: 180.505, y: 92.442505} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - __option_ChoiceCount + - __option_EventKey + - Speaker + - TalkText + - Gesture + - Expression + - Voice + - Bgm + - Vfx + - LineDuration + - LookAtPlayer + - WaitForInput + m_ValueList: + - rid: 4848514365209968924 + - rid: 4848514365209968925 + - rid: 4848514365209968926 + - rid: 4848514365209968927 + - rid: 4848514365209968928 + - rid: 4848514365209968929 + - rid: 4848514365209968930 + - rid: 4848514365209968931 + - rid: 4848514365209968932 + - rid: 4848514365209968933 + - rid: 4848514365209968934 + - rid: 4848514365209968935 + 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: 4848514365209968936 + - rid: 4848514365209968924 + type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968925 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + - rid: 4848514365209968926 + type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 11400000, guid: ccaea1cd59b6def4e93764f1965fe26f, type: 2} + - rid: 4848514365209968927 + type: {class: 'Constant`1[[DinoLove.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + Value: "\uC774\uACF3\uC774 \uC6B0\uB9AC \uBC18\uC774\uC57C!" + - rid: 4848514365209968928 + type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968929 + type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968930 + type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968931 + type: {class: 'Constant`1[[UnityEngine.AudioClip, UnityEngine.AudioModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968932 + type: {class: 'Constant`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968933 + type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 3 + - rid: 4848514365209968934 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 1 + - rid: 4848514365209968935 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968936 + type: {class: DialogLineNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: + - rid: 4848514365209968937 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 12075701744894930101 + m_Value1: 8354277098249585595 + m_HashGuid: + serializedVersion: 2 + Hash: b5ec06d6c18295a7bb03590cc25af073 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 11886921906498108818 + m_Value1: 1241276629292152157 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 92fda08d7ed4f6a45df5f38c84e63911 + m_UniqueId: Out + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_UniqueId: In + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 4848514365209968938 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 18033278169514442201 + m_Value1: 7595949161354533057 + m_HashGuid: + serializedVersion: 2 + Hash: d9fdb665f31243fac1987666843b6a69 + m_Version: 2 + m_Position: {x: 617.28503, y: 92} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - __option_ChoiceCount + - __option_EventKey + - Speaker + - TalkText + - Gesture + - Expression + - Voice + - Bgm + - Vfx + - LineDuration + - LookAtPlayer + - WaitForInput + m_ValueList: + - rid: 4848514365209968940 + - rid: 4848514365209968941 + - rid: 4848514365209968942 + - rid: 4848514365209968943 + - rid: 4848514365209968944 + - rid: 4848514365209968945 + - rid: 4848514365209968946 + - rid: 4848514365209968947 + - rid: 4848514365209968948 + - rid: 4848514365209968949 + - rid: 4848514365209968950 + - rid: 4848514365209968951 + 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: 4848514365209968952 + - rid: 4848514365209968939 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 1372665982324540530 + m_Value1: 4413923243976307164 + m_HashGuid: + serializedVersion: 2 + Hash: 7284b72f70b00c13dc310cefcd67413d + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_UniqueId: Out + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 18033278169514442201 + m_Value1: 7595949161354533057 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: d9fdb665f31243fac1987666843b6a69 + m_UniqueId: In + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 4848514365209968940 + type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968941 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + - rid: 4848514365209968942 + type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 11400000, guid: ccaea1cd59b6def4e93764f1965fe26f, type: 2} + - rid: 4848514365209968943 + type: {class: 'Constant`1[[DinoLove.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + Value: "\uC5B4\uC11C \uB4E4\uC5B4\uAC00\uC790!" + - rid: 4848514365209968944 + type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968945 + type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968946 + type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968947 + type: {class: 'Constant`1[[UnityEngine.AudioClip, UnityEngine.AudioModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968948 + type: {class: 'Constant`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968949 + type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 3 + - rid: 4848514365209968950 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968951 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968952 + type: {class: DialogLineNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: diff --git a/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna1.dlg.meta b/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna1.dlg.meta new file mode 100644 index 00000000..406e1452 --- /dev/null +++ b/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna1.dlg.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c9d086ecbcecee74bb3e518bf01e3bab +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 2ae5ca89bbed445479d9023586f0c041, type: 3} diff --git a/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna2.dlg b/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna2.dlg new file mode 100644 index 00000000..8083a233 --- /dev/null +++ b/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna2.dlg @@ -0,0 +1,273 @@ +%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: 12501, guid: 0000000000000000e000000000000000, type: 0} + m_Name: Chapter1_Yuna2 + m_EditorClassIdentifier: UnityEditor.dll::Unity.GraphToolkit.Editor.Implementation.GraphObjectImp + m_GraphModel: + rid: 4848514365209968918 + references: + version: 2 + RefIds: + - rid: -2 + type: {class: , ns: , asm: } + - rid: 4848514365209968918 + type: {class: GraphModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 14743801598135559126 + m_Value1: 14874423988134968649 + m_HashGuid: + serializedVersion: 2 + Hash: d6e3b4ff6f819ccc497d5523cf916cce + m_Name: Chapter1_Yuna2 + m_GraphNodeModels: + - rid: 4848514365209968921 + - rid: 4848514365209968923 + m_GraphWireModels: + - rid: 4848514365209968937 + m_GraphStickyNoteModels: [] + m_GraphPlacematModels: [] + m_GraphVariableModels: [] + m_GraphPortalModels: [] + m_SectionModels: + - rid: 4848514365209968919 + m_LocalSubgraphs: [] + m_LastKnownBounds: + serializedVersion: 2 + x: -86 + y: 92 + width: 617 + height: 432 + m_GraphElementMetaData: + - m_Guid: + m_Value0: 11886921906498108818 + m_Value1: 1241276629292152157 + m_HashGuid: + serializedVersion: 2 + Hash: 92fda08d7ed4f6a45df5f38c84e63911 + m_Category: 0 + m_Index: 0 + - m_Guid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_HashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_Category: 0 + m_Index: 1 + - m_Guid: + m_Value0: 12075701744894930101 + m_Value1: 8354277098249585595 + m_HashGuid: + serializedVersion: 2 + Hash: b5ec06d6c18295a7bb03590cc25af073 + m_Category: 2 + m_Index: 0 + m_EntryPoint: + rid: 4848514365209968921 + m_Graph: + rid: 4848514365209968920 + - rid: 4848514365209968919 + type: {class: SectionModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 17677551595292556901 + m_Value1: 13576497333533336155 + m_HashGuid: + serializedVersion: 2 + Hash: 657e0d28844753f55be24abb646869bc + m_Version: 2 + m_Items: [] + m_Title: + - rid: 4848514365209968920 + type: {class: DialogGraph, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: + - rid: 4848514365209968921 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 11886921906498108818 + m_Value1: 1241276629292152157 + m_HashGuid: + serializedVersion: 2 + Hash: 92fda08d7ed4f6a45df5f38c84e63911 + m_Version: 2 + m_Position: {x: -86.250015, y: 147.20003} + 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: 4848514365209968922 + - rid: 4848514365209968922 + type: {class: DialogStartNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: + - rid: 4848514365209968923 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_HashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_Version: 2 + m_Position: {x: 180.505, y: 92.442505} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - __option_ChoiceCount + - __option_EventKey + - Speaker + - TalkText + - Gesture + - Expression + - Voice + - Bgm + - Vfx + - LineDuration + - LookAtPlayer + - WaitForInput + m_ValueList: + - rid: 4848514365209968924 + - rid: 4848514365209968925 + - rid: 4848514365209968926 + - rid: 4848514365209968927 + - rid: 4848514365209968928 + - rid: 4848514365209968929 + - rid: 4848514365209968930 + - rid: 4848514365209968931 + - rid: 4848514365209968932 + - rid: 4848514365209968933 + - rid: 4848514365209968934 + - rid: 4848514365209968935 + 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: 4848514365209968936 + - rid: 4848514365209968924 + type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968925 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + - rid: 4848514365209968926 + type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 11400000, guid: ccaea1cd59b6def4e93764f1965fe26f, type: 2} + - rid: 4848514365209968927 + type: {class: 'Constant`1[[DinoLove.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + Value: "\uC5B4\uB5A1\uD574! \uC794\uB514 \uB108\uAC00 \uD070\uC77C\uC744 + \uC800\uC9C8\uB800\uC5B4!" + - rid: 4848514365209968928 + type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968929 + type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968930 + type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968931 + type: {class: 'Constant`1[[UnityEngine.AudioClip, UnityEngine.AudioModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968932 + type: {class: 'Constant`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968933 + type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 3 + - rid: 4848514365209968934 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 1 + - rid: 4848514365209968935 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968936 + type: {class: DialogLineNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: + - rid: 4848514365209968937 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 12075701744894930101 + m_Value1: 8354277098249585595 + m_HashGuid: + serializedVersion: 2 + Hash: b5ec06d6c18295a7bb03590cc25af073 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 11886921906498108818 + m_Value1: 1241276629292152157 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 92fda08d7ed4f6a45df5f38c84e63911 + m_UniqueId: Out + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_UniqueId: In + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: diff --git a/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna2.dlg.meta b/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna2.dlg.meta new file mode 100644 index 00000000..70b48f7b --- /dev/null +++ b/Assets/07_Data/DialogGraph/Chapter1/Chapter1_Yuna2.dlg.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 07e10aeedd00f9446aeeff50b21c0b19 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 2ae5ca89bbed445479d9023586f0c041, type: 3} diff --git a/Assets/08_Timeline/Chapter1/TailStep.playable b/Assets/08_Timeline/Chapter1/TailStep.playable index 67c674a3..dfc60ab1 100644 --- a/Assets/08_Timeline/Chapter1/TailStep.playable +++ b/Assets/08_Timeline/Chapter1/TailStep.playable @@ -20,13 +20,82 @@ MonoBehaviour: m_Curves: {fileID: 0} m_Parent: {fileID: 11400000} m_Children: [] - m_Clips: [] + m_Clips: + - m_Version: 1 + m_Start: 0 + m_ClipIn: 0 + m_Asset: {fileID: -771098743622065478} + m_Duration: 0.8333333333333334 + m_TimeScale: 1 + m_ParentTrack: {fileID: -2815585861390351363} + m_EaseInDuration: 0 + m_EaseOutDuration: 0 + m_BlendInDuration: -1 + m_BlendOutDuration: -1 + m_MixInCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_MixOutCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BlendInCurveMode: 0 + m_BlendOutCurveMode: 0 + m_ExposedParameterNames: [] + m_AnimationCurves: {fileID: 0} + m_Recordable: 1 + m_PostExtrapolationMode: 0 + m_PreExtrapolationMode: 1 + m_PostExtrapolationTime: Infinity + m_PreExtrapolationTime: 0 + m_DisplayName: Recorded m_Markers: m_Objects: [] m_InfiniteClipPreExtrapolation: 1 m_InfiniteClipPostExtrapolation: 1 - m_InfiniteClipOffsetPosition: {x: 4.082, y: 0.10000014, z: -7.219} - m_InfiniteClipOffsetEulerAngles: {x: -0, y: 90, z: 0} + m_InfiniteClipOffsetPosition: {x: 0, y: 0, z: 0} + m_InfiniteClipOffsetEulerAngles: {x: 0, y: 0, z: 0} m_InfiniteClipTimeOffset: 0 m_InfiniteClipRemoveOffset: 0 m_InfiniteClipApplyFootIK: 1 @@ -36,11 +105,33 @@ MonoBehaviour: m_EulerAngles: {x: 0, y: 0, z: 0} m_AvatarMask: {fileID: 0} m_ApplyAvatarMask: 1 - m_TrackOffset: 0 - m_InfiniteClip: {fileID: 4947415874097238917} + m_TrackOffset: 1 + m_InfiniteClip: {fileID: 0} m_OpenClipOffsetRotation: {x: 0, y: 0, z: 0, w: 1} m_Rotation: {x: 0, y: 0, z: 0, w: 1} m_ApplyOffsets: 0 +--- !u!114 &-771098743622065478 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 030f85c3f73729f4f976f66ffb23b875, type: 3} + m_Name: Recorded + m_EditorClassIdentifier: Unity.Timeline::UnityEngine.Timeline.AnimationPlayableAsset + m_Clip: {fileID: 4947415874097238917} + m_Position: {x: 4.082, y: 0.10000014, z: -7.219} + m_EulerAngles: {x: -0, y: 90, z: 0} + m_UseTrackMatchFields: 1 + m_MatchTargetFields: 63 + m_RemoveStartOffset: 0 + m_ApplyFootIK: 1 + m_Loop: 0 + m_Version: 1 + m_Rotation: {x: 0, y: 0, z: 0, w: 1} --- !u!114 &-750181864502722589 MonoBehaviour: m_ObjectHideFlags: 1 @@ -81,12 +172,54 @@ MonoBehaviour: m_Tracks: - {fileID: -2815585861390351363} - {fileID: -750181864502722589} + - {fileID: 2525309450605174760} m_FixedDuration: 0 m_EditorSettings: m_Framerate: 60 m_ScenePreview: 1 m_DurationMode: 0 m_MarkerTrack: {fileID: 0} +--- !u!114 &2525309450605174760 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: d21dcc2386d650c4597f3633c75a1f98, type: 3} + m_Name: Animation Track (1) + m_EditorClassIdentifier: Unity.Timeline::UnityEngine.Timeline.AnimationTrack + m_Version: 3 + m_AnimClip: {fileID: 0} + m_Locked: 0 + m_Muted: 0 + m_CustomPlayableFullTypename: + m_Curves: {fileID: 0} + m_Parent: {fileID: 11400000} + m_Children: [] + m_Clips: [] + m_Markers: + m_Objects: [] + m_InfiniteClipPreExtrapolation: 1 + m_InfiniteClipPostExtrapolation: 1 + m_InfiniteClipOffsetPosition: {x: 3.795, y: 0.124, z: -9.36} + m_InfiniteClipOffsetEulerAngles: {x: 0, y: 329.95154, z: 0} + m_InfiniteClipTimeOffset: 0 + m_InfiniteClipRemoveOffset: 0 + m_InfiniteClipApplyFootIK: 1 + mInfiniteClipLoop: 0 + m_MatchTargetFields: 63 + m_Position: {x: 0, y: 0, z: 0} + m_EulerAngles: {x: 0, y: 0, z: 0} + m_AvatarMask: {fileID: 0} + m_ApplyAvatarMask: 1 + m_TrackOffset: 0 + m_InfiniteClip: {fileID: 6398700257599453556} + m_OpenClipOffsetRotation: {x: 0, y: 0, z: 0, w: 1} + m_Rotation: {x: 0, y: 0, z: 0, w: 1} + m_ApplyOffsets: 0 --- !u!74 &4947415874097238917 AnimationClip: m_ObjectHideFlags: 0 @@ -418,7 +551,452 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 15c38f6fa1940124db1ab7f6fe7268d1, type: 3} m_Name: Signal Emitter m_EditorClassIdentifier: Unity.Timeline::UnityEngine.Timeline.SignalEmitter - m_Time: 0.05 + m_Time: 0.8833333333333333 m_Retroactive: 0 m_EmitOnce: 0 m_Asset: {fileID: 11400000, guid: 2bd1255d6715c4b44bc6c1fca1cb2053, type: 2} +--- !u!74 &6398700257599453556 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Recorded (1) + serializedVersion: 8 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 3.0166667 + value: {x: 0, y: 390.0485, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 4 + value: {x: 0, y: 210.0484, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -0.0029697418, y: 0, z: 0.024822235} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.16666667 + value: {x: -0.0066183805, y: 0, z: 0.038485527} + inSlope: {x: -0.019459406, y: 0, z: 0.07287089} + outSlope: {x: -0.019459406, y: 0, z: 0.07287089} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.75 + value: {x: -1.5300788, y: 0, z: 0.91977406} + inSlope: {x: 0, y: 0, z: 1.2368963} + outSlope: {x: 0, y: 0, z: 1.2368963} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3.0166667 + value: {x: 1.0836543, y: 0.000000014901161, z: 5.4502783} + inSlope: {x: 0.00007578793, y: 0, z: 0} + outSlope: {x: 0.00007578793, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 4 + value: {x: 1.0837158, y: 0.000000014901161, z: 5.450218} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + metaData: 0 + - serializedVersion: 2 + path: 0 + attribute: 4 + script: {fileID: 0} + typeID: 4 + customType: 4 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + metaData: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 4 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.0029697418 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: -0.0066183805 + inSlope: -0.019459406 + outSlope: -0.019459406 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.75 + value: -1.5300788 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.0166667 + value: 1.0836543 + inSlope: 0.00007578793 + outSlope: 0.00007578793 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 1.0837158 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.75 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.0166667 + value: 0.000000014901161 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 0.000000014901161 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.024822235 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 0.038485527 + inSlope: 0.07287089 + outSlope: 0.07287089 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.75 + value: 0.91977406 + inSlope: 1.2368963 + outSlope: 1.2368963 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.0166667 + value: 5.4502783 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 5.450218 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 3.0166667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 3.0166667 + value: 390.0485 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 210.0484 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 3.0166667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_EulerEditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.x + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.y + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.z + path: + classID: 4 + script: {fileID: 0} + flags: 0 + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index e076d136..e4d7571e 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a27346fbcaf8a56eacecd4ea644cb783c8688225656047a00801ae481931982 -size 622 +oid sha256:85178c447e20af15ab776d43e1dc322132997777511971fed1ea5c84bdaf3e79 +size 633