文本Id获取文字以及多语言

 

 

 

using UnityEngine;
using UnityEngine.UI;

namespace YouYou
{
    /// <summary>
    /// Text自定义子类
    /// </summary>
    public class YouYouText : Text
    {
        [Header("本地化语言的Key")]
        [SerializeField]
        private string m_Localization;

        protected override void Start()
        {
            base.Start();
            if (GameEntry.Localization != null)
            {
                text = GameEntry.Localization.GetString(m_Localization);
            }
        }
    }
}

 

using UnityEditor;

namespace YouYou
{
    [CustomEditor(typeof(YouYouText))]
    public class YouYouTextInspector : UnityEditor.UI.TextEditor
    {
        private SerializedProperty m_Localization;

        protected override void OnEnable()
        {
            base.OnEnable();
            m_Localization = serializedObject.FindProperty("m_Localization");
        }

        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            serializedObject.Update();
            EditorGUILayout.PropertyField(m_Localization);
            serializedObject.ApplyModifiedProperties();
        }
    }
}

 

 

using UnityEngine;


namespace YouYou
{
    /// <summary>
    /// 多语言枚举
    /// </summary>
    public enum YouYouLanguage
    {
        /// <summary>
        /// 中文
        /// </summary>
        Chinese = 0,
        /// <summary>
        /// 英文
        /// </summary>
        English = 1
    }

    public class LocalizationComponent : YouYouBaseComponent
    {
        private LocalizationManager m_LocalizationManager;
        
        [Header("当前语言(必须和多语言数据表的语言字段 一致)")]
        [SerializeField]
        private YouYouLanguage m_CurrLanguage;
        /// <summary>
        /// 当前语言(必须和多语言数据表的语言字段 一致)
        /// </summary>
        public YouYouLanguage CurrLanguage
        {
            get { return m_CurrLanguage; }
        }


        protected override void OnAwake()
        {
            base.OnAwake();
            m_LocalizationManager = new LocalizationManager();

#if !UNITY_EDITOR
            Init();
#endif
        }

        /// <summary>
        /// 初始化
        /// </summary>
        private void Init()
        {
            switch (Application.systemLanguage)
            {
                default:
                case SystemLanguage.Chinese:
                case SystemLanguage.ChineseSimplified:
                case SystemLanguage.ChineseTraditional:
                    m_CurrLanguage = YouYouLanguage.Chinese;
                    break;
                case SystemLanguage.English:
                    m_CurrLanguage = YouYouLanguage.English;
                    break;
            }
        }
        /// <summary>
        /// 获取本地化文本内容
        /// </summary>
        /// <param name="key"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public string GetString(string key, params object[] args)
        {
            return m_LocalizationManager.GetString(key, args);
        }

        public override void Shutdown()
        {
        }
    }
}

 

 

using UnityEditor;

namespace YouYou
{
    [CustomEditor(typeof(LocalizationComponent),true)]
    public class LocalizationComponentInspector : Editor
    {
        private SerializedProperty m_CurrLanguage;

        void OnEnable()
        {
            m_CurrLanguage = serializedObject.FindProperty("m_CurrLanguage");
        }

        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            EditorGUILayout.PropertyField(m_CurrLanguage);
            serializedObject.ApplyModifiedProperties();
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值