using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using Newtonsoft.Json; using UnityEngine; namespace Kill.Managers { public class LanguageManager : MonoBehaviour { public static LanguageManager Instance; [System.Serializable] public struct Language { public string key; public string zh; public string en; } List languageList; [System.Serializable] public enum LanguageType { Chinese, English } void Awake() { Instance = this; } public LanguageType languageType = LanguageType.English; /// /// 根据系统语言自动设置 App 语言 /// 只有简体中文和繁体中文显示中文,其他全部显示英文 /// public void SetLanguageBySystem() { SystemLanguage systemLanguage = Application.systemLanguage; Debug.Log($"系统语言: {systemLanguage}"); if (systemLanguage == SystemLanguage.Chinese || systemLanguage == SystemLanguage.ChineseSimplified || systemLanguage == SystemLanguage.ChineseTraditional) { languageType = LanguageType.Chinese; Debug.Log("设置语言为: 中文"); } else { languageType = LanguageType.English; Debug.Log("设置语言为: 英文"); } } /// /// 手动设置语言 /// public void SetLanguage(LanguageType type) { languageType = type; Debug.Log($"手动设置语言为: {type}"); } public async Task Init() { TextAsset textAsset = await LoadRes.Instance.LoadAssetAsync("language", "language.json"); languageList = JsonConvert.DeserializeObject>(textAsset.text); } public string GetLanguage(string key) { int index = languageList.FindIndex(x => x.key == key); if(index<0||index>=languageList.Count) index=0; if (languageType == LanguageType.Chinese) return languageList[index].zh; else return languageList[index].en; } } }