using UnityEngine.UI; using System.Text; using UnityEngine; public class TextEx : Text { [SerializeField] bool m_IsKey = false; public bool isKey { get { return m_IsKey; } set { m_IsKey = value; } } [SerializeField] private string m_KeyName; public string keyName { get { return m_KeyName; } set { m_KeyName = value; } } [SerializeField] TextColType m_ColorType = TextColType.None; public TextColType colorType { get { return m_ColorType; } set { if (m_ColorType != value) { m_ColorType = value; if (m_ColorType == TextColType.None) return; this.color = UIHelper.GetUIColor(value, bgColorType == BackGroundColorType.Bright); } } } [SerializeField] private BackGroundColorType m_BGColorType = BackGroundColorType.Dark; public BackGroundColorType bgColorType { get { return m_BGColorType; } set { m_BGColorType = value; if (m_ColorType == TextColType.None) return; this.color = UIHelper.GetUIColor(colorType, m_BGColorType == BackGroundColorType.Bright); } } public enum BackGroundColorType { Dark, Bright, } protected override void Awake() { if (Application.isPlaying) { //设置默认的字体 if (isKey) { if (!string.IsNullOrEmpty(keyName)) { this.text = UIHelper.ReplaceNewLine(Language.Get(keyName)); } else { Debug.LogError("程序请检查近期的界面文本是否正确设置语言表 TextEx keyName is null: " + this.name); } } Language.languageChangeEvent += OnLanguageSwitch; } if (colorType != TextColType.None) { this.color = UIHelper.GetUIColor(colorType, bgColorType == BackGroundColorType.Bright); } } protected override void OnDestroy() { Language.languageChangeEvent -= OnLanguageSwitch; } private void OnLanguageSwitch() { //重新加载字体 } }