UI换了很多,spine主视觉停用
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user