using System.Collections; using System.Collections.Generic; using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif /// <summary> /// Handles long instances of dialogue with voice acting included when available /// </summary> [CreateAssetMenu(fileName = "New Dialogue", menuName = "Dialogue Config/New Dialogue")] public class DialogueSO : ScriptableObject { [TextArea(3, 12)] public List<string> dialogues; public bool HasAudio; public List<AudioClip> dialogueClips; } #if UNITY_EDITOR [CustomEditor(typeof(DialogueSO))] public class DialogueSOEditor : Editor { private DialogueSO container; private void OnEnable() { container = target as DialogueSO; } public override void OnInspectorGUI() { serializedObject.Update(); EditorGUILayout.LabelField("Dialogue", EditorStyles.boldLabel); EditorGUILayout.Space(10); EditorGUILayout.PropertyField(serializedObject.FindProperty("dialogues")); EditorGUILayout.Space(20); EditorGUILayout.LabelField("Voice Acting", EditorStyles.boldLabel); EditorGUILayout.PropertyField(serializedObject.FindProperty("HasAudio")); if (container.HasAudio) EditorGUILayout.PropertyField(serializedObject.FindProperty("dialogueClips")); serializedObject.ApplyModifiedProperties(); } } #endif