diff --git a/Assets/02_Scripts/Communication.meta b/Assets/02_Scripts/Communication.meta new file mode 100644 index 00000000..a08ee5f9 --- /dev/null +++ b/Assets/02_Scripts/Communication.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb6d4501b8312bd45b64f94666429fce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Communication/Dialog.meta b/Assets/02_Scripts/Communication/Dialog.meta new file mode 100644 index 00000000..f741aed9 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4e1fa77a8f96cfa499f3381d7a03bb12 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs b/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs new file mode 100644 index 00000000..f13ceb6f --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs @@ -0,0 +1,8 @@ +using System; + +[Serializable] +public class DialogChoice +{ + public DialogNode DestinationNode; + public string ChoiceText; +} diff --git a/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs.meta b/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs.meta new file mode 100644 index 00000000..07bdb3d2 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 53b0b23b66f7c2c4f999504013357bae \ No newline at end of file diff --git a/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs b/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs new file mode 100644 index 00000000..70127b7b --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/Dialog Group")] +public class DialogGroup : ScriptableObject +{ + public string DialogGroupName; + public DialogNode StartNode; +} diff --git a/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs.meta b/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs.meta new file mode 100644 index 00000000..9e78ef4f --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1391123ae67c59242b2ba15388efd65b \ No newline at end of file diff --git a/Assets/02_Scripts/Communication/Dialog/DialogNode.cs b/Assets/02_Scripts/Communication/Dialog/DialogNode.cs new file mode 100644 index 00000000..26b93fb4 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogNode.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/Dialog Node")] +public class DialogNode : ScriptableObject +{ + [Header("Speaker")] + public CharacterData Speaker; + + [Header("Content")] + [TextArea(2,5)] public string TalkText; + public GestureData Gesture; + public ExpressionData Expression; + public VoiceClip Voice; + public float LineDuration; //자동 넘김 시간 + //LineDuration=0 → 플레이어 입력 대기 (수동) + //Voice 있음 → 클립 길이만큼 대기 + //Voice 없음 → LineDuration 대기 + + + [Header("Flow")] + public DialogNode Next; // 선택지 없을 때 자동으로 갈 노드 + public List Choices; // 있으면 플레이어 선택 대기 +} diff --git a/Assets/02_Scripts/Communication/Dialog/DialogNode.cs.meta b/Assets/02_Scripts/Communication/Dialog/DialogNode.cs.meta new file mode 100644 index 00000000..acf76eb8 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogNode.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 120455f2b87acc14c9b01cab221c71eb \ No newline at end of file diff --git a/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs new file mode 100644 index 00000000..562e89b3 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using UnityEngine; + +public class DialogPlayer : MonoBehaviour +{ + [SerializeField] private List _dialogGroups; + private Dictionary _dialogGroupMap; + + private void Awake() + { + _dialogGroupMap = new Dictionary(); + foreach (var g in _dialogGroups) + { + _dialogGroupMap[g.DialogGroupName] = g; + } + } + + public void VoicePlay(DialogNode node) + { + + //CharacterVoiceObject speakerVoiceObject = FindSpeakerVoiceObject(node.Speaker); + //speakerVoiceObject.Play(node.Voice.Clip); + } +} diff --git a/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs.meta b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs.meta new file mode 100644 index 00000000..efcc3410 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9e349795efd8d1445b33cddf0442db11 \ No newline at end of file diff --git a/Assets/02_Scripts/Communication/Voice.meta b/Assets/02_Scripts/Communication/Voice.meta new file mode 100644 index 00000000..0d475ef5 --- /dev/null +++ b/Assets/02_Scripts/Communication/Voice.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e2502925ef2616a429da6f70b887176a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs b/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs new file mode 100644 index 00000000..088cc01f --- /dev/null +++ b/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +public class CharacterVoiceObject : MonoBehaviour +{ + public CharacterData Character; + public AudioSource VoiceSource; + + public void Play(AudioClip clip) => VoiceSource.PlayOneShot(clip); +} diff --git a/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs.meta b/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs.meta new file mode 100644 index 00000000..fcff6c07 --- /dev/null +++ b/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f7b9cbce15ac9074ca0a54f7837824b8 \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Character.meta b/Assets/02_Scripts/Data/Character.meta new file mode 100644 index 00000000..1afa07d9 --- /dev/null +++ b/Assets/02_Scripts/Data/Character.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f885cca7d988aa4db7692d1b7dc15e5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Data/Character/CharacterData.cs b/Assets/02_Scripts/Data/Character/CharacterData.cs new file mode 100644 index 00000000..8f15688c --- /dev/null +++ b/Assets/02_Scripts/Data/Character/CharacterData.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Character/CharacterData")] +public class CharacterData : ScriptableObject +{ + public string Id; + public string Name; + public Sprite Portrait; +} diff --git a/Assets/02_Scripts/Data/Character/CharacterData.cs.meta b/Assets/02_Scripts/Data/Character/CharacterData.cs.meta new file mode 100644 index 00000000..90aac803 --- /dev/null +++ b/Assets/02_Scripts/Data/Character/CharacterData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0446c9fbb574c5242beeae1ece853b87 \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication.meta b/Assets/02_Scripts/Data/Communication.meta new file mode 100644 index 00000000..1d3d1f4d --- /dev/null +++ b/Assets/02_Scripts/Data/Communication.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f57c57748092259458a9d5dc3db640d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Data/Communication/ExpressionData.cs b/Assets/02_Scripts/Data/Communication/ExpressionData.cs new file mode 100644 index 00000000..bd2c7c9e --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/ExpressionData.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/Expression")] +public class ExpressionData : ScriptableObject +{ + [HideInInspector] public int AnimationLayer = 1; + public string StateName; + public float CrossFadeDuration = 0.2f; + public AnimationClip PreviewClip; +} \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication/ExpressionData.cs.meta b/Assets/02_Scripts/Data/Communication/ExpressionData.cs.meta new file mode 100644 index 00000000..5a584970 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/ExpressionData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 197305103c49bf349a3a749f48a4513e \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication/GestureData.cs b/Assets/02_Scripts/Data/Communication/GestureData.cs new file mode 100644 index 00000000..d83c08b7 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/GestureData.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/Gesture")] +public class GestureData : ScriptableObject +{ + [HideInInspector] public int AnimationLayer = 0; + public string StateName; + public float CrossFadeDuration = 0.2f; + public AnimationClip PreviewClip; +} diff --git a/Assets/02_Scripts/Data/Communication/GestureData.cs.meta b/Assets/02_Scripts/Data/Communication/GestureData.cs.meta new file mode 100644 index 00000000..367622e1 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/GestureData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 59589a6a14790d546aa8c5979fbb71ef \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication/VoiceClip.cs b/Assets/02_Scripts/Data/Communication/VoiceClip.cs new file mode 100644 index 00000000..50bdfe51 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/VoiceClip.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/VoiceClip")] +public class VoiceClip : ScriptableObject +{ + public string VoiceCode; //해당 음성 고유코드 + public AudioClip Clip; +} \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication/VoiceClip.cs.meta b/Assets/02_Scripts/Data/Communication/VoiceClip.cs.meta new file mode 100644 index 00000000..ebc4f236 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/VoiceClip.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 56b64eb84b3a1a44fa7fff7ae5e932d0 \ No newline at end of file