【问题标题】:Unity TextMeshPro extended Editor on disable issueUnity TextMeshPro 扩展编辑器禁用问题
【发布时间】:2019-01-07 19:57:57
【问题描述】:

我正在尝试解决一个非常特殊的问题,可能你们中的某个人有类似的问题,我将从 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 编辑器中尝试停用游戏对象或其父级,父级隐藏,TMPro 隐藏,但文本属性在编辑器中仍然可见,而正常的编辑器行为隐藏,可能是我对 TMPro 的自定义编辑器有点混乱,但如果有人经历过这些,请帮助。

【问题讨论】:

  • OnInspectorGUI 实际上与Gizmos 无关...
  • 是的,编辑过的兄弟
  • 像这样扩展统一组件(即添加自定义检查器)会做一些奇怪的事情。当我在 2-3 年前这样做时,它会转储一个不影响控制台可用性的错误,我只需要忽略它。

标签: unity3d


【解决方案1】:

在对代码进行研究之后,我和我的团队来到了下一个场景,我将 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 将导致自定义检查器类出现一些问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-09
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2022-01-26
    • 2020-11-15
    相关资源
    最近更新 更多