UI换了很多,spine主视觉停用

This commit is contained in:
FloatGaming
2026-06-15 20:17:25 +08:00
parent 5eec879582
commit 216ab08e8d
3634 changed files with 814422 additions and 382766 deletions
+139 -11
View File
@@ -1,4 +1,4 @@
using System.Collections;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
@@ -38,9 +38,12 @@ public class userSettings : MonoBehaviour
[SerializeField] private float clearupConfirmSeconds = 5f;
private int clearupClickCount = 0;
private float clearupExpireTime;
private bool _updatingLanguageDropdown;
private readonly List<string> _availableLanguageCodes = new List<string>();
private void Start()
{
InitializeLanguageDropdown();
UpdateUserInfoDisplay();
}
@@ -50,7 +53,6 @@ public class userSettings : MonoBehaviour
{
if (user_login_source_text != null)
{
// 获取 Steam 的测试分支名 (Beta branch)
string branch;
if (SteamApps.GetCurrentBetaName(out branch, 64))
{
@@ -58,7 +60,7 @@ public class userSettings : MonoBehaviour
}
else
{
user_login_source_text.text = "(Steam) public"; // 默认分支
user_login_source_text.text = LocalizationService.Get("settings.source.steam_public", "(Steam) public");
}
}
@@ -72,35 +74,41 @@ public class userSettings : MonoBehaviour
else
{
if (user_login_source_text != null)
user_login_source_text.text = "Unknown Server";
user_login_source_text.text = LocalizationService.Get("settings.source.unknown_server", "Unknown Server");
if (user_source_uid_text != null)
user_source_uid_text.text = "Unknown User";
user_source_uid_text.text = LocalizationService.Get("settings.source.unknown_user", "Unknown User");
}
}
private void OnEnable()
{
LocalizationService.LanguageChanged += HandleLanguageChanged;
if (clearup_saveData_button != null)
clearup_saveData_button.onClick.AddListener(OnClearupSaveDataClicked);
if (export_saveData_button != null) export_saveData_button.onClick.AddListener(ResetClearupCounter);
if (import_saveData_button != null) import_saveData_button.onClick.AddListener(ResetClearupCounter);
if (view_detailedHighlight_button != null) view_detailedHighlight_button.onClick.AddListener(ResetClearupCounter);
if (language_dropdown != null) language_dropdown.onValueChanged.AddListener(_ => ResetClearupCounter());
if (language_dropdown != null) language_dropdown.onValueChanged.AddListener(OnLanguageDropdownValueChanged);
ResetClearupCounter();
InitializeLanguageDropdown();
SyncLanguageDropdownValue();
}
private void OnDisable()
{
LocalizationService.LanguageChanged -= HandleLanguageChanged;
if (clearup_saveData_button != null)
clearup_saveData_button.onClick.RemoveListener(OnClearupSaveDataClicked);
if (export_saveData_button != null) export_saveData_button.onClick.RemoveListener(ResetClearupCounter);
if (import_saveData_button != null) import_saveData_button.onClick.RemoveListener(ResetClearupCounter);
if (view_detailedHighlight_button != null) view_detailedHighlight_button.onClick.RemoveListener(ResetClearupCounter);
if (language_dropdown != null) language_dropdown.onValueChanged.RemoveListener(_ => ResetClearupCounter());
if (language_dropdown != null) language_dropdown.onValueChanged.RemoveListener(OnLanguageDropdownValueChanged);
ResetClearupCounter();
}
@@ -118,6 +126,127 @@ public class userSettings : MonoBehaviour
clearupClickCount = 0;
}
private void InitializeLanguageDropdown()
{
if (language_dropdown == null)
{
return;
}
LocalizationService.EnsureInitialized();
IReadOnlyList<string> availableCodes = LocalizationService.GetAvailableLanguageCodes();
_availableLanguageCodes.Clear();
List<Dropdown.OptionData> options = new List<Dropdown.OptionData>();
for (int i = 0; i < availableCodes.Count; i++)
{
string code = availableCodes[i];
_availableLanguageCodes.Add(code);
options.Add(new Dropdown.OptionData(GetLanguageDisplayName(code)));
}
if (options.Count == 0)
{
_availableLanguageCodes.Add(LocalizationService.DefaultLanguageCode);
_availableLanguageCodes.Add("en-US");
options.Add(new Dropdown.OptionData("简体中文"));
options.Add(new Dropdown.OptionData("English"));
}
_updatingLanguageDropdown = true;
language_dropdown.ClearOptions();
language_dropdown.AddOptions(options);
language_dropdown.RefreshShownValue();
_updatingLanguageDropdown = false;
SyncLanguageDropdownValue();
}
private static string GetLanguageDisplayName(string languageCode)
{
if (string.IsNullOrWhiteSpace(languageCode))
{
return "Unknown";
}
if (languageCode.StartsWith("zh", System.StringComparison.OrdinalIgnoreCase))
{
return "简体中文";
}
if (languageCode.StartsWith("en", System.StringComparison.OrdinalIgnoreCase))
{
return "English";
}
return languageCode;
}
private void SyncLanguageDropdownValue()
{
if (language_dropdown == null || _availableLanguageCodes.Count == 0)
{
return;
}
string currentCode = LocalizationService.CurrentLanguageCode;
int index = GetLanguageDropdownIndex(currentCode);
_updatingLanguageDropdown = true;
language_dropdown.SetValueWithoutNotify(index);
language_dropdown.RefreshShownValue();
_updatingLanguageDropdown = false;
}
private int GetLanguageDropdownIndex(string languageCode)
{
for (int i = 0; i < _availableLanguageCodes.Count; i++)
{
if (string.Equals(_availableLanguageCodes[i], languageCode, System.StringComparison.OrdinalIgnoreCase))
{
return i;
}
}
for (int i = 0; i < _availableLanguageCodes.Count; i++)
{
if (languageCode.StartsWith("zh", System.StringComparison.OrdinalIgnoreCase) &&
_availableLanguageCodes[i].StartsWith("zh", System.StringComparison.OrdinalIgnoreCase))
{
return i;
}
if (languageCode.StartsWith("en", System.StringComparison.OrdinalIgnoreCase) &&
_availableLanguageCodes[i].StartsWith("en", System.StringComparison.OrdinalIgnoreCase))
{
return i;
}
}
return 0;
}
private void OnLanguageDropdownValueChanged(int index)
{
ResetClearupCounter();
if (_updatingLanguageDropdown || _availableLanguageCodes.Count == 0)
{
return;
}
if (index < 0 || index >= _availableLanguageCodes.Count)
{
index = 0;
}
LocalizationService.SetLanguage(_availableLanguageCodes[index]);
}
private void HandleLanguageChanged(string languageCode)
{
SyncLanguageDropdownValue();
UpdateUserInfoDisplay();
}
private void OnClearupSaveDataClicked()
{
if (clearupClickCount > 0 && Time.unscaledTime > clearupExpireTime)
@@ -130,11 +259,11 @@ public class userSettings : MonoBehaviour
if (clearupClickCount == 1)
{
gNotice.warning.display("此操作将重置存档");
gNotice.warning.display(LocalizationService.LocalizeLiteral("此操作将重置存档"));
}
else if (clearupClickCount == 2)
{
gNotice.error.display("再次点击以确认此危险操作");
gNotice.error.display(LocalizationService.LocalizeLiteral("再次点击以确认此危险操作"));
}
else if (clearupClickCount >= 3)
{
@@ -220,8 +349,7 @@ public class userSettings : MonoBehaviour
#if UNITY_EDITOR
AssetDatabase.SaveAssets();
#endif
// 完成后返回主界面
SceneManager.LoadScene("Main_main");
}
}