Framwork/Assets/Scripts/Base/Language/LanguageItem.cs

89 lines
2.8 KiB
C#
Raw Normal View History

2025-05-23 16:24:00 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class LanguageItem : MonoBehaviour
{
2025-06-04 22:49:37 +08:00
public TMP_Text Text;
2025-05-23 16:24:00 +08:00
2025-06-04 22:49:37 +08:00
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;
2025-05-23 16:24:00 +08:00
2025-06-04 22:49:37 +08:00
public bool isSetImage = false;
[ConditionalField("isSetImage")] public Image ChinImage;
[ConditionalField("isSetImage")] public Image EnglishImage;
2025-05-23 16:24:00 +08:00
2025-06-04 22:49:37 +08:00
public bool isSetGo = false;
[ConditionalField("isSetGo")] public GameObject ChinGo;
[ConditionalField("isSetGo")] public GameObject EnglishGo;
2025-05-23 16:24:00 +08:00
private void Awake()
{
Text = GetComponentInParent<TMP_Text>();
}
private void Start()
{
LanguageManager.Instance.LanguageChange += LanguageChange;
if (!LanguageManager.Instance.IsSimplified)
chin = LanguageManager.Instance.S2T(chin);
else
chin = LanguageManager.Instance.T2S(chin);
LanguageChange(LanguageManager.LanguageType.English);
}
private void LanguageChange(LanguageManager.LanguageType type)
{
switch (type)
{
case LanguageManager.LanguageType.English:
2025-06-04 22:49:37 +08:00
if (isSetImage && ChinImage != null && EnglishImage != null)
2025-05-23 16:24:00 +08:00
{
ChinImage.gameObject.SetActive(false);
EnglishImage.gameObject.SetActive(true);
}
2025-06-04 22:49:37 +08:00
if (isSetText && Text != null)
2025-05-23 16:24:00 +08:00
{
Text.text = english;
Text.font = EnglishFontAsset;
}
2025-06-04 22:49:37 +08:00
if (isSetGo && ChinGo != null && EnglishGo != null)
{
ChinGo.gameObject.SetActive(false);
EnglishGo.gameObject.SetActive(true);
}
2025-05-23 16:24:00 +08:00
break;
case LanguageManager.LanguageType.Chinese:
2025-06-04 22:49:37 +08:00
if (isSetImage && ChinImage != null && EnglishImage != null)
2025-05-23 16:24:00 +08:00
{
ChinImage.gameObject.SetActive(true);
EnglishImage.gameObject.SetActive(false);
}
2025-06-04 22:49:37 +08:00
if (isSetText && Text != null)
2025-05-23 16:24:00 +08:00
{
Text.text = chin;
Text.font = ChinFontAsset;
}
2025-06-04 22:49:37 +08:00
if (isSetGo && ChinGo != null && EnglishGo != null)
{
ChinGo.gameObject.SetActive(true);
EnglishGo.gameObject.SetActive(false);
}
2025-05-23 16:24:00 +08:00
break;
default:
throw new ArgumentOutOfRangeException(nameof(type), type, null);
}
}
}