关于禁用问题的Unity TextMeshPro扩展编辑器

时间:2019-01-07 19:57:57

标签: unity3d

我试图解决一个非常特殊的问题,也许你们中的一个有类似的问题,我将从Unity的包管理器中扩展TextMeshProUGUI类,只是为将使用此功能的人添加一个简单的字符串额外属性(称为m_key)进行本地化GameObject只需将本地化字符串的键放在编辑器上,并检查带有本地化字符串的TMPro文本看起来如何,好吧,我将所有自定义TextMeshPro编辑器复制到一个新的编辑器类中,仅用于显示本地化文本。在统一编辑器中,并在OnInspectorGUI函数上添加下一个代码:

m_key = EditorGUILayout.TextField(new GUIContent("LOCALIZED KEY:"), localized_key.stringValue, GUILayout.Height(18), GUILayout.ExpandWidth(true));
localized_key.stringValue = m_key;
text_prop.stringValue = LanguageWizard.GetGameText(localized_key.stringValue);

m_key只是编辑器类中的一个字符串变量,而localized_key则来自扩展类的m_key属性,此时实际上运行良好,但问题是在Unity Editor中尝试停用游戏对象或其控件时父,父隐藏,TMPro隐藏,但是text属性在编辑器中仍然可见,而正常的编辑器行为隐藏了,可能与TMPro的自定义编辑器有些混乱,但是如果有人遇到过这种情况,请帮助。

1 个答案:

答案 0 :(得分:0)

在研究了代码之后,我和我的团队来到了下一个场景,在该场景中,我将OnEnable和OnDisable方法用于一些订阅代码和内容,我们注意到该类是从TextMeshProUGUI类扩展的,这些方法在继承自基本方法,我忘了调用base.OnDisable和base.OnEnable,当我编写它们并在编辑器中测试结果时,文本通常会隐藏

protected override void OnEnable()
{
    base.OnEnable();
    //Custom Stuff
}

protected override void OnDisable()
{
    base.OnDisable();
    // Custom Stuff
}

这适用于TextMeshPro 1.24版本,下一版本1.3将在自定义检查器类上引起一些问题