如何使用`GUIStyle`实现`EditorGUI.HelpBox`?

时间:2014-07-25 17:37:27

标签: user-interface unity3d editor inspector

我正在写一个DecoratorDrawer,它允许为检查员中的任何字段提供长而有意义的描述。我的目标是这样的: enter image description here
(伪装成gimp)

这需要更浅的背景,圆形边框等。

编辑器中有些地方使用此样式,例如,光照贴图窗口中有两个实例: lightmaper window with widget look selected

我无法使用EditorGUI.HelpBox,因为:

  1. 我无法可靠地测量HelpBox的内容高度。请注意,抽屉禁止使用EditorGUILayout

  2. 没有富文本或其他方式来设置内容的样式

  3. 图片未被授权 - 我希望稍后将其作为选项

  4. 使用HelpBox看起来像这样:

    enter image description here


    我的问题是:是否有硬编码的GUIStyleUnityEditor / UnityEditorInternal方法允许以此格式显示信息?如果不是,任何关于如何伪造这种风格的想法?如何制作圆角?请记住,有一个专业皮肤看起来不同,所以如果解决方案适用于两个皮肤,它会很好。

2 个答案:

答案 0 :(得分:5)

您可以通过GUI.skin获取帮助框样式来检索它。

这样的东西
EditorGUILayout.TextArea("This is my text", GUI.skin.GetStyle("HelpBox"));

会帮你的

请注意,这仍然不允许您使用富文本。它默认是禁用的。要启用它,您可以执行类似

的操作
GUIStyle myStyle = GUI.skin.GetStyle("HelpBox");
myStyle.richText = true;

EditorGUILayout.TextArea("This is my text <b>AND IT IS BOLD</b>", myStyle);

将导致

答案 1 :(得分:1)

我发现的最好方法是将EditorStyles.helpBox传递给构造函数。

style = new GUIStyle(EditorStyles.helpBox);
style.richText = true;

这样,您就不会通过更改样式来影响EditorStyles.helpBox。