using System.Collections; using System.Collections.Generic; using Kill.Managers; using UnityEngine; using UnityEngine.UI; namespace Kill.UI.Pages { public class ChangeLanguagePage : MonoBehaviour { LanguageManager.LanguageType languageType; public Button[] languageButtons; public Button confirmButton; public Button backButton; void Start() { UIManager.Instance.RegisterBackAction(OnBack); languageType = LanguageManager.Instance.languageType; int currentIndex = (int)languageType; for (int i = 0; i < languageButtons.Length; i++) { int index = i; // 需要一个局部变量来捕获当前的索引 languageButtons[i].onClick.RemoveAllListeners(); languageButtons[i].onClick.AddListener(() => OnLanguageButtonClicked(index)); // 更新按钮显示状态 languageButtons[i].interactable = (i != currentIndex); languageButtons[i].transform.Find("icon").gameObject.SetActive(i == currentIndex); } confirmButton.onClick.RemoveAllListeners(); confirmButton.onClick.AddListener(OnConfirm); backButton.onClick.RemoveAllListeners(); backButton.onClick.AddListener(OnBack); } void OnLanguageButtonClicked(int index) { languageType = (LanguageManager.LanguageType)index; // 更新按钮状态 for (int i = 0; i < languageButtons.Length; i++) { languageButtons[i].interactable = (i != index); languageButtons[i].transform.Find("icon").gameObject.SetActive(i == index); } } public void OnConfirm() { LanguageManager.Instance.SetLanguage(languageType); UIManager.Instance.OpenPage(UIManager.PageName.selfPage); } public void OnBack() { UIManager.Instance.RegisterBackAction(GetComponentInParent().OnBack); Destroy(gameObject); } } }