using System; using System.Collections; using System.Collections.Generic; using HK; using TMPro; using UnityEngine; using UnityEngine.UI; public class LanguageItem : MonoBehaviour { public TMP_Text Text; public bool isSetText = false; [ConditionalField("isSetText")] public string chin; [ConditionalField("isSetText")] public string english; [ConditionalField("isSetText")] public TMP_FontAsset ChinFontAsset; [ConditionalField("isSetText")] public TMP_FontAsset EnglishFontAsset; public bool isSetImage = false; [ConditionalField("isSetImage")] public Image ChinImage; [ConditionalField("isSetImage")] public Image EnglishImage; public bool isSetGo = false; [ConditionalField("isSetGo")] public GameObject ChinGo; [ConditionalField("isSetGo")] public GameObject EnglishGo; public bool isSetSprite = false; [ConditionalField("isSetSprite")] public string ChinSpritePath; [ConditionalField("isSetSprite")] public string EnglishSpritePath; private LanguageManager.LanguageType currentType = LanguageManager.LanguageType.English; private void Awake() { if (isSetText) Text = GetComponentInParent(); } private void Start() { LanguageManager.Instance.LanguageChange += LanguageChange; LanguageChange(LanguageManager.Instance.type); if (LanguageManager.Instance.IsSimplified) chin = LanguageManager.Instance.T2S(chin); } private void OnDestroy() { LanguageManager.Instance.LanguageChange -= LanguageChange; } private void LanguageChange(LanguageManager.LanguageType type) { currentType = type; switch (type) { case LanguageManager.LanguageType.English: if (isSetImage && ChinImage != null && EnglishImage != null) { ChinImage.gameObject.SetActive(false); EnglishImage.gameObject.SetActive(true); } if (isSetText && Text != null) { if (!string.IsNullOrEmpty(english)) Text.text = english; Text.font = EnglishFontAsset; } if (isSetGo && ChinGo != null && EnglishGo != null) { ChinGo.gameObject.SetActive(false); EnglishGo.gameObject.SetActive(true); } if (isSetSprite && !string.IsNullOrEmpty(ChinSpritePath) && !string.IsNullOrEmpty(EnglishSpritePath)) { GetComponentInParent().sprite = ResourcesManager.Instance.Load(EnglishSpritePath); } break; case LanguageManager.LanguageType.Chinese: if (isSetImage && ChinImage != null && EnglishImage != null) { ChinImage.gameObject.SetActive(true); EnglishImage.gameObject.SetActive(false); } if (isSetText && Text != null) { if (!string.IsNullOrEmpty(chin)) Text.text = chin; Text.font = ChinFontAsset; } if (isSetGo && ChinGo != null && EnglishGo != null) { ChinGo.gameObject.SetActive(true); EnglishGo.gameObject.SetActive(false); } if (isSetSprite && !string.IsNullOrEmpty(ChinSpritePath) && !string.IsNullOrEmpty(EnglishSpritePath)) { GetComponentInParent().sprite = ResourcesManager.Instance.Load(ChinSpritePath); } break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } } }