using System; using System.Collections.Generic; using System.IO; using UnityEngine; using XRLib.UI; using TMPro; using UnityEngine.UI; using Newtonsoft.Json; using TriLibCore.SFB; using System.Text; namespace XED { [Serializable] public class LanguageConfig { public string defaultLanguage; public Dictionary languages; } public class Panel_MultilingualSettingModal : PanelBase { public TMP_Dropdown Dropdown_Languages; public Button Button_OpenFile; public Button Button_Save; private string selectedLanguage; private Dictionary languages = new Dictionary(); private string json; public string saveLanguage; public override void AfterAwake() { Button_OpenFile.onClick.AddListener(OnClickOpenFileButton); Button_Save.onClick.AddListener(OnClickSaveButton); } void OnClickOpenFileButton() { StandaloneFileBrowser.OpenFilePanelAsync("Open File", "", "json", false, LoadJson); } void OnClickSaveButton() { saveLanguage = selectedLanguage; } void LoadJson(IList items) { if (items != null && items.Count > 0) { var item = items[0]; using (var reader = new StreamReader(item.OpenStream(), Encoding.UTF8)) { json = reader.ReadToEnd(); } } else { Debug.LogWarning("ÆÄÀÏÀ» ¼±ÅÃÇÏÁö ¾Ê¾Ò½À´Ï´Ù."); } var data = JsonConvert.DeserializeObject(json); if (data == null || data.languages == null) { Debug.LogError("µ¥ÀÌÅͰ¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù."); return; } languages = data.languages; SetLanguageDropdown(); } private void SetLanguageDropdown() { Dropdown_Languages.ClearOptions(); List options = new List(); foreach (var language in languages.Keys) { options.Add(language); } Dropdown_Languages.AddOptions(options); Dropdown_Languages.onValueChanged.AddListener(OnLanguageDropdownValueChanged); var languageKey = Dropdown_Languages.options[0].text; selectedLanguage = languages[languageKey]; } private void OnLanguageDropdownValueChanged(int index) { var languageKey = Dropdown_Languages.options[index].text; selectedLanguage = languages[languageKey]; } } }