killapp/Assets/Scripts/UI/Pages/SelfPage/ChangeLanguagePage.cs

57 lines
2.1 KiB
C#
Raw Permalink Normal View History

2026-06-08 08:55:10 +08:00
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<SelfPage>().OnBack);
Destroy(gameObject);
}
}
}