| Main/System/HeroUI/HeroBestWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Language/Language.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/PlayerProfile/ChangeLanguageWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/PlayerProfile/ChangeLanguageWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/PlayerProfile/PlayerProfileWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Main/System/HeroUI/HeroBestWin.cs
@@ -222,6 +222,12 @@ HeroUIManager.Instance.selectForPreviewHeroID = HeroUIManager.Instance.heroCollectList[resultIndex]; Display(); //控制一级功能界面的皮肤按钮 var ui = UIManager.Instance.GetUI<HeroBestBaseWin>(); if (ui != null) { ui.ShowSkinBtn(); } } Main/System/Language/Language.cs
@@ -2,6 +2,7 @@ using System.Collections.Generic; using System; using UnityEngine; using LitJson; public static class Language @@ -22,38 +23,74 @@ } } public static Dictionary<string, string> languageShowDict = new Dictionary<string, string>();//界面显示的多语言版本 //启动多语言的渠道,如{appid:[默认语言标识,是否首次安装强制指定语言,只包含哪些语言版本]} // 如{"sghy":["en","0","en,zh,ft"]},字符0代表随系统选择如果找不到则用默认,配1则不检查系统直接用默认 //为了同代码版本同表维护,保持配置一致按appid区分,只做翻译处理 public static Dictionary<string, string[]> languageStartDict = new Dictionary<string, string[]>();//启动多语言的渠道 static Dictionary<string, string> languageDict = new Dictionary<string, string>();// unity语言配置对应的约定字符 找不到用默认 /// <summary> /// 根据系统语言自动设置默认语言 /// 未强制语言的 根据系统语言自动设置默认语言 等情况 /// </summary> public static void InitDefaultLanguage() { var config = InitialFunctionConfig.Get("Language").Numerical1; Debug.LogFormat("系统语言:{0} {1}", Application.systemLanguage, config); if (string.IsNullOrEmpty(config)) //初始化, 该表是随包安装的如果热更需要二次才生效 var config = InitialFunctionConfig.Get("LanguageEx"); languageShowDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical1); languageStartDict = JsonMapper.ToObject<Dictionary<string, string[]>>(config.Numerical2); languageDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical3); if (languageStartDict == null || !languageStartDict.ContainsKey(VersionConfigEx.Get().appId)) { //检查有没多语言 Debug.Log("当前渠道未开启多语言:" + VersionConfigEx.Get().appId); return; } Debug.LogFormat("系统语言:{0} {1}", Application.systemLanguage, config.Numerical1); var id = LocalSave.GetString("LANGUAGE_ID1"); if (!string.IsNullOrEmpty(id)) return; switch (Application.systemLanguage) { case SystemLanguage.Chinese: case SystemLanguage.ChineseSimplified: case SystemLanguage.ChineseTraditional: { id = "zh"; break; } //玩家已经选择过语言,不做处理 Debug.Log("当前选择语言:" + id); return; } var json = LitJson.JsonMapper.ToObject(config); if (json.Keys.Contains(id)) Id = id; var defaultCfg = languageStartDict[VersionConfigEx.Get().appId]; string languageMark; if (defaultCfg[1] == "0") { //随系统选择 languageMark = ((int)Application.systemLanguage).ToString(); if (languageDict.ContainsKey(languageMark)) { id = languageDict[languageMark]; var lanArr = defaultCfg[2].Split(','); if (Array.IndexOf(lanArr, id) == -1) { //不包含的语言 用默认 id = defaultCfg[0]; } } else { //默认 id = defaultCfg[0]; } } else { //开启的情况下必须要有个默认值 Id = InitialFunctionConfig.Get("Language").Numerical2; //强制指定默认 id = defaultCfg[0]; } Id = id; Debug.LogFormat("系统语言:{0} 设置为{1}", Application.systemLanguage, Id); } /// <summary> @@ -64,9 +101,14 @@ { get { var config = InitialFunctionConfig.Get("Language").Numerical1; if (string.IsNullOrEmpty(config)) if (languageStartDict == null || languageStartDict.Count == 0) { return ""; } if (!languageStartDict.ContainsKey(VersionConfigEx.Get().appId)) { return ""; } return LocalSave.GetString("LANGUAGE_ID1"); } set @@ -75,6 +117,7 @@ } } //多语言的路径 //默认路径不附加地址,Id不为空时附加Id public static string fixPath { @@ -86,6 +129,17 @@ } } // 获取语言选项 public static string[] GetLanguages() { if (languageStartDict == null || !languageStartDict.ContainsKey(VersionConfig.Get().appId)) { return null; } return languageStartDict[VersionConfig.Get().appId][2].Split(','); } public static string Get(string _id) { // return string.Empty; Main/System/PlayerProfile/ChangeLanguageWin.cs
New file @@ -0,0 +1,77 @@ using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ChangeLanguageWin : UIBase { [SerializeField] Toggle[] languageToggles; [SerializeField] Text[] languageTexts; [SerializeField] Button changeBtn; List<string> languageList = new List<string>(); protected override void InitComponent() { changeBtn.AddListener(() => { int index = 0; for (int i = 0; i < languageToggles.Length; i++) { if (languageToggles[i].isOn) { index = i; break; } } var lgId = languageList[index]; ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("language_tip_info"), Language.Get("language_tip_btn2"), Language.Get("language_tip_btn1"), (yes) => { if (yes) { Language.Id = lgId; #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif } }); }); } protected override void OnPreOpen() { languageList = new List<string>(); Display(); } protected override void OnPreClose() { base.OnPreClose(); } void Display() { var languages = Language.GetLanguages(); for (int i = 0; i < languageToggles.Length; i++) { if (i < languages.Length) { languageToggles[i].SetActive(true); languageTexts[i].text = Language.languageShowDict[languages[i]]; if (Language.Id == languages[i]) { languageToggles[i].isOn = true; } languageList.Add(languages[i]); } else { languageToggles[i].SetActive(false); } } } } Main/System/PlayerProfile/ChangeLanguageWin.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 2e64ebc16632a5d4895be9d2e57e2650 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/PlayerProfile/PlayerProfileWin.cs
@@ -21,7 +21,8 @@ [SerializeField] ButtonEx btnSyncPlatformAvatar; [SerializeField] ButtonEx btnCopy; [SerializeField] ButtonEx btnChangeName; [SerializeField] ButtonEx btnText1; [SerializeField] ButtonEx btnLanguage; [SerializeField] ButtonEx btnText1; // 隐私协议 [SerializeField] ButtonEx btnText2; protected override void InitComponent() { @@ -57,6 +58,10 @@ avatarCell.SetListener(() => { UIManager.Instance.OpenWindow<PhantasmPavilionWin>(); }); btnLanguage.AddListener(()=> { UIManager.Instance.OpenWindow<ChangeLanguageWin>(); }); } @@ -105,6 +110,8 @@ avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID, PlayerDatas.Instance.baseData.face, PlayerDatas.Instance.baseData.facePic)); officialTitleCell.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID,1f); officialTitleCell.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID, 1f); var languages = Language.GetLanguages(); btnLanguage.SetActive(!languages.IsNullOrEmpty()); } }