using System.Collections.Generic; using System.IO; using System.Linq; using UnityEngine; namespace Data { public class Dialog { public readonly int Index; public readonly string Content; public readonly string Type; public readonly string Animation; public readonly string Character; public readonly string DialogEvent; public Dialog(int index, string content, string type, string animation, string character, string dialogEvent) { Index = index; Content = content; Type = type; Animation = animation; Character = character; DialogEvent = dialogEvent; } } public class DialogManager : MonoBehaviour { public string filePath = "Assets/Dialog/DialogData.csv"; private readonly List _dialog = new(); private static DialogManager _instance; public static DialogManager Instance { get { if (_instance) return _instance; _instance = FindObjectOfType() ?? new GameObject("DialogData").AddComponent(); return _instance; } } private void Awake() { if (_instance != null && _instance != this) { Destroy(gameObject); } else { LoadCsv(filePath); _instance = this; } } private void LoadCsv(string path) { var lines = File.ReadAllLines(path); print(lines); for (var i = 1; i < lines.Length; i++) { var values = lines[i].Split(','); var dialog = new Dialog( int.Parse(values[0]), values[1], values[2], values[3], values[4], values[5] ); _dialog.Add(dialog); } } public Dialog GetDialogByIndex(int index) { foreach (var dialog in _dialog.Where(dialogue => dialogue.Index == index)) { return dialog; } Debug.LogWarning($"Dialog with index {index} not found."); return null; } } }