From 07e7715be84b86783dc6f01240eb4aaba8147eac Mon Sep 17 00:00:00 2001 From: bob <605277374@qq.com> Date: Thu, 12 Jun 2025 16:18:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Resources/Fgui/Common/Common_fui.bytes | Bin 32904 -> 33446 bytes Assets/Resources/Fgui/Main/Main_fui.bytes | Bin 10256 -> 10365 bytes .../Services/Settings/Base/OptionBase.cs | 3 +- .../Options/Language/LanguageSetting.cs | 44 +++++--- .../Language/Runtime/Const/LanguageConst.cs | 101 ++++++------------ Assets/Scripts/Startup/App.cs | 5 +- Assets/Scripts/UI/Binders/CommonBinder.cs | 1 + .../Scripts/UI/Common/SelectPages.Designer.cs | 25 +++++ .../UI/Common/SelectPages.Designer.cs.meta | 2 + Assets/Scripts/UI/Common/SelectPages.cs | 36 +++++++ Assets/Scripts/UI/Common/SelectPages.cs.meta | 2 + .../UI/Settings/SettingItem.Designer.cs | 2 + Assets/Scripts/UI/Settings/SettingItem.cs | 9 ++ Assets/Scripts/UI/Settings/SettingPanel.cs | 36 +++++-- .../assets/Common/Com/SelectPageItem.xml | 10 ++ FGUIProject/assets/Common/Com/SelectPages.xml | 16 +++ FGUIProject/assets/Common/package.xml | 2 + .../assets/Main/Com/Items/SettingItem.xml | 10 +- .../settings/whoot/6hgkvlau5dtx1a.json | 1 + UserSettings/EditorUserSettings.asset | 18 ++-- 20 files changed, 212 insertions(+), 111 deletions(-) create mode 100644 Assets/Scripts/UI/Common/SelectPages.Designer.cs create mode 100644 Assets/Scripts/UI/Common/SelectPages.Designer.cs.meta create mode 100644 Assets/Scripts/UI/Common/SelectPages.cs create mode 100644 Assets/Scripts/UI/Common/SelectPages.cs.meta create mode 100644 FGUIProject/assets/Common/Com/SelectPageItem.xml create mode 100644 FGUIProject/assets/Common/Com/SelectPages.xml create mode 100644 FGUIProject/settings/whoot/6hgkvlau5dtx1a.json diff --git a/Assets/Resources/Fgui/Common/Common_fui.bytes b/Assets/Resources/Fgui/Common/Common_fui.bytes index 5f4bf53b3c76f4efbffa278835d8770c2a2b39c0..eedfbb13429ca061e4447e64fd1a38e8b57a663b 100644 GIT binary patch delta 6418 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 delta 6175 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 SeEH#l{7@3Xz5VE*)%P1gnX>r+ delta 507 zcmewxFd<-q6=yF47%0?lbpFI|#>C9fz|hFh^#30t0|RpwP|A%5$au~HQltdL`aoO? z6gdjS$AI`I5Z|7hEfB%TKKY1%0gF9Qe)A6jY39j~6j<0h2SuRTzc@&sws$?ti2CR@o1v+n_h+FpizP*=%JZj+Z|+&_7#e2mP2 z|Ns8~V>k$uX98kI1|WxlfsH|pA)DdAWLX7u#siaG!DKF&oC+rQg2|@}s*Hy=b1U9t V-TYTAg^`UlATd3)cyfY + public class LanguageSetting : MultiOption { - private SettingLanguage _defaultLanguage; + private int _defaultLanguage; public override string Name => "Language"; public override string Group => SettingsDef.Group.Language; @@ -27,11 +16,38 @@ namespace NBF.Setting protected override void OnInitialize() { - _defaultLanguage = (SettingLanguage)Application.systemLanguage; + var list = LanguageConst.LanguageList; + var systemLanguage = Application.systemLanguage; + var systemIndex = list.FindIndex(t => t.Language == systemLanguage); + if (systemIndex < 0) + { + systemIndex = 0; + } + + _defaultLanguage = (int)Lan.Inst.GetCurrentLanguage(); + for (int i = 0; i < list.Count; i++) + { + var lang = list[i]; + AddOption(lang.Name, i); + } + + _defaultLanguage = systemIndex; + var current = GetValue(); + if (current < 0 || current >= LanguageConst.LanguageList.Count) + { + SetValue(_defaultLanguage); + } } protected override void OnApply() { + var lang = LanguageConst.LanguageList[GetValue()]; + Lan.Inst.UseLanguage(lang.Language); } + + // public override string GetDisplayString() + // { + // return ((SystemLanguage)GetValue()).ToString(); + // } } } \ No newline at end of file diff --git a/Assets/Scripts/NBC/Language/Runtime/Const/LanguageConst.cs b/Assets/Scripts/NBC/Language/Runtime/Const/LanguageConst.cs index cb541aa78..d10611217 100644 --- a/Assets/Scripts/NBC/Language/Runtime/Const/LanguageConst.cs +++ b/Assets/Scripts/NBC/Language/Runtime/Const/LanguageConst.cs @@ -16,83 +16,42 @@ namespace NBC //简体中文、繁体中文、英语、日语、韩语、泰语、越南语、法语、德语、葡萄牙与、西班牙语、俄语、波兰语、荷兰语、 - //土耳其语、意大利语、印度尼西亚语 + public static readonly List LanguageList = new List() + { + new LanguageInfo() { Language = SystemLanguage.English, Name = "English", Code = "en" }, + new LanguageInfo() { Language = SystemLanguage.ChineseSimplified, Name = "简体中文", Code = "zh-CN" }, + // new LanguageInfo() { Language = SystemLanguage.ChineseTraditional, Name = "繁體中文", Code = "zh-TW" }, + // new LanguageInfo() { Language = SystemLanguage.Japanese, Name = "日本語", Code = "ja" }, + // new LanguageInfo() { Language = SystemLanguage.Korean, Name = "한국어", Code = "ko" }, + // new LanguageInfo() { Language = SystemLanguage.Thai, Name = "ไทย", Code = "th" }, + // new LanguageInfo() { Language = SystemLanguage.Vietnamese, Name = "Tiếng Việt", Code = "vi" }, + // new LanguageInfo() { Language = SystemLanguage.German, Name = "Deutsch", Code = "de" }, + // new LanguageInfo() { Language = SystemLanguage.French, Name = "Français", Code = "fr" }, + // new LanguageInfo() { Language = SystemLanguage.Russian, Name = "Русский", Code = "ru" }, + // new LanguageInfo() { Language = SystemLanguage.Spanish, Name = "Español", Code = "es" }, + // new LanguageInfo() { Language = SystemLanguage.Portuguese, Name = "Português", Code = "pt" }, + // new LanguageInfo() { Language = SystemLanguage.Polish, Name = "Polski", Code = "pl" }, + // new LanguageInfo() { Language = SystemLanguage.Dutch, Name = "Nederlands", Code = "nl" }, + // new LanguageInfo() { Language = SystemLanguage.Turkish, Name = "Türkçe", Code = "tr" }, + // new LanguageInfo() { Language = SystemLanguage.Indonesian, Name = "Bahasa Indonesia", Code = "id" }, + // new LanguageInfo() { Language = SystemLanguage.Italian, Name = "Italiano", Code = "it" } + }; + /// /// 自定义语言和名字映射关系 /// public static readonly Dictionary languageMap = - new Dictionary() + new Dictionary(); + + static LanguageConst() + { + languageMap.Clear(); + foreach (var languageInfo in LanguageList) { - { - SystemLanguage.English, - new LanguageInfo() { Language = SystemLanguage.English, Name = "English", Code = "en" } - }, - { - SystemLanguage.ChineseSimplified, - new LanguageInfo() { Language = SystemLanguage.ChineseSimplified, Name = "简体中文", Code = "zh-CN" } - }, - // { - // SystemLanguage.ChineseTraditional, - // new LanguageInfo() { Language = SystemLanguage.ChineseTraditional, Name = "繁體中文", Code = "zh-TW" } - // }, - // { - // SystemLanguage.Japanese, - // new LanguageInfo() { Language = SystemLanguage.Japanese, Name = "日本語", Code = "ja" } - // }, - // { - // SystemLanguage.Korean, - // new LanguageInfo() { Language = SystemLanguage.Korean, Name = "한국어", Code = "ko" } - // }, - // { - // SystemLanguage.Thai, - // new LanguageInfo() { Language = SystemLanguage.Thai, Name = "ไทย", Code = "th" } - // }, - // { - // SystemLanguage.Vietnamese, - // new LanguageInfo() { Language = SystemLanguage.Vietnamese, Name = "Tiếng Việt", Code = "vi" } - // }, - // { - // SystemLanguage.German, - // new LanguageInfo() { Language = SystemLanguage.German, Name = "Deutsch", Code = "de" } - // }, - // { - // SystemLanguage.French, - // new LanguageInfo() { Language = SystemLanguage.French, Name = "Français", Code = "fr" } - // }, - // { - // SystemLanguage.Russian, - // new LanguageInfo() { Language = SystemLanguage.Russian, Name = "Русский", Code = "ru" } - // }, - // { - // SystemLanguage.Spanish, - // new LanguageInfo() { Language = SystemLanguage.Spanish, Name = "Español", Code = "es" } - // }, - // { - // SystemLanguage.Portuguese, - // new LanguageInfo() { Language = SystemLanguage.Portuguese, Name = "Português", Code = "pt" } - // }, - // { - // SystemLanguage.Polish, - // new LanguageInfo() { Language = SystemLanguage.Polish, Name = "Polski", Code = "pl" } - // }, - // { - // SystemLanguage.Dutch, - // new LanguageInfo() { Language = SystemLanguage.Dutch, Name = "Nederlands", Code = "nl" } - // }, - // { - // SystemLanguage.Turkish, - // new LanguageInfo() { Language = SystemLanguage.Turkish, Name = "Türkçe", Code = "tr" } - // }, - // { - // SystemLanguage.Indonesian, - // new LanguageInfo() { Language = SystemLanguage.Indonesian, Name = "Bahasa Indonesia", Code = "id" } - // }, - // { - // SystemLanguage.Italian, - // new LanguageInfo() { Language = SystemLanguage.Italian, Name = "Italiano", Code = "it" } - // }, - }; + languageMap.Add(languageInfo.Language, languageInfo); + } + } } } \ No newline at end of file diff --git a/Assets/Scripts/Startup/App.cs b/Assets/Scripts/Startup/App.cs index 48bb87416..1558f98d5 100644 --- a/Assets/Scripts/Startup/App.cs +++ b/Assets/Scripts/Startup/App.cs @@ -61,8 +61,8 @@ namespace NBF private void Init() { - InitService(); InitLanguage(); + InitService(); InitUI(); } @@ -70,6 +70,7 @@ namespace NBF private void InitLanguage() { + // var map = LanguageConst.languageMap; Lan.Inst.AddLanguageModule((int)LanguageModuleType.Text, new LanguageText()); Lan.Inst.AddLanguageModule((int)LanguageModuleType.Image, new LanguageImage()); Lan.Inst.AddLanguageModule((int)LanguageModuleType.Font, new LanguageFont()); @@ -80,7 +81,7 @@ namespace NBF } UI.Inst.SetUILanguage(); - Lan.Inst.AutoUseLanguage(); + // Lan.Inst.AutoUseLanguage(); } #endregion diff --git a/Assets/Scripts/UI/Binders/CommonBinder.cs b/Assets/Scripts/UI/Binders/CommonBinder.cs index d03266723..4283d11e1 100644 --- a/Assets/Scripts/UI/Binders/CommonBinder.cs +++ b/Assets/Scripts/UI/Binders/CommonBinder.cs @@ -8,6 +8,7 @@ namespace NBF { public static void BindAll() { + UIObjectFactory.SetPackageItemExtension(SelectPages.URL, typeof(SelectPages)); UIObjectFactory.SetPackageItemExtension(BottomMenu.URL, typeof(BottomMenu)); UIObjectFactory.SetPackageItemExtension(ClassifyList.URL, typeof(ClassifyList)); UIObjectFactory.SetPackageItemExtension(CommonMenu.URL, typeof(CommonMenu)); diff --git a/Assets/Scripts/UI/Common/SelectPages.Designer.cs b/Assets/Scripts/UI/Common/SelectPages.Designer.cs new file mode 100644 index 000000000..082d84cae --- /dev/null +++ b/Assets/Scripts/UI/Common/SelectPages.Designer.cs @@ -0,0 +1,25 @@ +/**本脚本为自动生成,每次生成会覆盖!请勿手动修改,生成插件文档及项目地址:https://git.whoot.com/whoot-games/whoot.fguieditorplugin**/ + + +using FairyGUI; +using FairyGUI.Utils; +using NBC; + +namespace NBF +{ + public partial class SelectPages + { + public const string URL = "ui://6hgkvlau5dtx1a"; + + public GList List; + + public override void ConstructFromXML(XML xml) + { + base.ConstructFromXML(xml); + + List = (GList)GetChild("List"); + OnInited(); + UILanguage.TrySetComponentLanguage(this); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Common/SelectPages.Designer.cs.meta b/Assets/Scripts/UI/Common/SelectPages.Designer.cs.meta new file mode 100644 index 000000000..c7356c085 --- /dev/null +++ b/Assets/Scripts/UI/Common/SelectPages.Designer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8e05d47a4fe9d174db57d8e523b1d53b \ No newline at end of file diff --git a/Assets/Scripts/UI/Common/SelectPages.cs b/Assets/Scripts/UI/Common/SelectPages.cs new file mode 100644 index 000000000..9040952f9 --- /dev/null +++ b/Assets/Scripts/UI/Common/SelectPages.cs @@ -0,0 +1,36 @@ +// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖 + +using UnityEngine; +using FairyGUI; +using NBC; + +namespace NBF +{ + public partial class SelectPages : GComponent + { + public int TotalPages { get; private set; } + + public int CurrentPage { get; private set; } + + private void OnInited() + { + } + + public void SetTotal(int totalPage) + { + TotalPages = totalPage; + List.RemoveChildrenToPool(); + for (var i = 0; i < totalPage; i++) + { + List.AddItemFromPool(); + } + } + + public void SetCurrent(int currentPage) + { + if (currentPage < 0 || currentPage >= TotalPages) return; + CurrentPage = currentPage; + List.selectedIndex = CurrentPage; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Common/SelectPages.cs.meta b/Assets/Scripts/UI/Common/SelectPages.cs.meta new file mode 100644 index 000000000..25a1e0ae4 --- /dev/null +++ b/Assets/Scripts/UI/Common/SelectPages.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 405973384bfed8e409a629849e3cef2e \ No newline at end of file diff --git a/Assets/Scripts/UI/Settings/SettingItem.Designer.cs b/Assets/Scripts/UI/Settings/SettingItem.Designer.cs index 27912a385..f16bb95e7 100644 --- a/Assets/Scripts/UI/Settings/SettingItem.Designer.cs +++ b/Assets/Scripts/UI/Settings/SettingItem.Designer.cs @@ -19,6 +19,7 @@ namespace NBF public BtnInputControl BtnPrev; public BtnInputControl BtnNext; public GTextField TextSliderValue; + public SelectPages Pages; public override void ConstructFromXML(XML xml) { @@ -32,6 +33,7 @@ namespace NBF BtnPrev = (BtnInputControl)GetChild("BtnPrev"); BtnNext = (BtnInputControl)GetChild("BtnNext"); TextSliderValue = (GTextField)GetChild("TextSliderValue"); + Pages = (SelectPages)GetChild("Pages"); OnInited(); UILanguage.TrySetComponentLanguage(this); } diff --git a/Assets/Scripts/UI/Settings/SettingItem.cs b/Assets/Scripts/UI/Settings/SettingItem.cs index 404ad7f8e..041355010 100644 --- a/Assets/Scripts/UI/Settings/SettingItem.cs +++ b/Assets/Scripts/UI/Settings/SettingItem.cs @@ -135,6 +135,7 @@ namespace NBF private void UpdateValueText() { + Pages.visible = false; if (Option is RangeOption range) { Slider.value = range.GetValue(); @@ -143,6 +144,14 @@ namespace NBF else if (Option is IMultiOption multiOption) { TextInfo.text = multiOption.GetDisplayString(); + Pages.visible = true; + var count = multiOption.GetOptionNames().Count; + if (Pages.TotalPages != count) + { + Pages.SetTotal(count); + } + + Pages.SetCurrent(multiOption.GetValue()); } } } diff --git a/Assets/Scripts/UI/Settings/SettingPanel.cs b/Assets/Scripts/UI/Settings/SettingPanel.cs index 3df7fa553..41e412241 100644 --- a/Assets/Scripts/UI/Settings/SettingPanel.cs +++ b/Assets/Scripts/UI/Settings/SettingPanel.cs @@ -17,6 +17,8 @@ namespace NBF private readonly List tabList = new List(); private string _currentTab = ""; + private List _canSelectIndex = new List(); + private int _nowSelectIndex = -1; protected override void OnInit() { @@ -60,7 +62,7 @@ namespace NBF private void ResetSettingList() { // TextTitle.text = Lan.Get(_currentGroup); - + _nowSelectIndex = -1; List.RemoveChildrenToPool(); if (string.IsNullOrEmpty(_currentTab)) return; var options = Settings.Instance.GetOptionsByTab(_currentTab); @@ -76,6 +78,7 @@ namespace NBF list.Add(option); } + _canSelectIndex.Clear(); var url = UIPackage.GetItemURL(UIPackName, "SettingSubTitleItem"); foreach (var key in groupOptions.Keys) { @@ -90,6 +93,8 @@ namespace NBF if (List.AddItemFromPool() is SettingItem item) { item.SetData(option); + var index = List.GetChildIndex(item); + _canSelectIndex.Add(index); } } } @@ -138,18 +143,11 @@ namespace NBF } else if (action == InputDef.UI.Up) { - SetListSelected(List.selectedIndex - 1); + ChangeListSelected(); } else if (action == InputDef.UI.Down) { - if (List.selectedIndex < 0) - { - SetListSelected(0); - } - else - { - SetListSelected(List.selectedIndex + 1); - } + ChangeListSelected(false); } else if (action == InputDef.UI.Back) { @@ -161,6 +159,24 @@ namespace NBF } } + + private void ChangeListSelected(bool up = true) + { + if (!up) + { + _nowSelectIndex++; + } + else + { + _nowSelectIndex--; + } + + if (_nowSelectIndex < 0) _nowSelectIndex = 0; + else if (_nowSelectIndex >= _canSelectIndex.Count) _nowSelectIndex = _canSelectIndex.Count - 1; + var targetIndex = _canSelectIndex[_nowSelectIndex]; + SetListSelected(targetIndex); + } + private void SetListSelected(int selectedIndex) { if (selectedIndex >= 0 && selectedIndex < List.numItems) diff --git a/FGUIProject/assets/Common/Com/SelectPageItem.xml b/FGUIProject/assets/Common/Com/SelectPageItem.xml new file mode 100644 index 000000000..aede7fd61 --- /dev/null +++ b/FGUIProject/assets/Common/Com/SelectPageItem.xml @@ -0,0 +1,10 @@ + + + + + + + + +