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();
}
}
}