如何在EditorWindow脚本中加粗EditorGUILayout.Toggle?

时间:2019-03-05 17:33:58

标签: c# unity3d

在我询问如何加粗GUI之前。 答案是创建一种样式:

GUIStyle myToggleStyle = new GUIStyle(GUI.skin.toggle);

然后将其设置为粗体:

myToggleStyle.fontStyle = FontStyle.Bold;

最后将其与Toggle一起使用:

GUI.Toggle(new Rect(5, 10, 200, 60), false, "Select All", myToggleStyle);

但是现在我正在使用另一个具有相同文本“全选”的Toggle,但这一次是EditorGILayout.Toggle,我不需要或不想使用GUI.Toggle,因为GUI.Toggle需要Rect。

问题是使用EditorGUILayout.Toggle myToggleStyle不起作用。它什么也不做,不会使文本/字体变粗体。

这在OnGUI内部:

EditorGUI.BeginChangeCheck();
selectAll[i] = EditorGUILayout.Toggle("Select All", selectAll[i]);
if (EditorGUI.EndChangeCheck())
              SelectDeselectAll(i);

我尝试过:

EditorGUI.BeginChangeCheck();
GUIStyle myToggleStyle = new GUIStyle(GUI.skin.toggle);
myToggleStyle.fontStyle = FontStyle.Bold;
selectAll[i] = EditorGUILayout.Toggle("Select All", selectAll[i], myToggleStyle);
if (EditorGUI.EndChangeCheck())
    SelectDeselectAll(i);

但这并不是使“全选”加粗。

1 个答案:

答案 0 :(得分:1)

有效的解决方案:

EditorGUI.BeginChangeCheck();
var origFontStyle = EditorStyles.label.fontStyle;
EditorStyles.label.fontStyle = FontStyle.Bold;
selectAll[i] = EditorGUILayout.Toggle("Select All", selectAll[i]);
EditorStyles.label.fontStyle = origFontStyle;
if (EditorGUI.EndChangeCheck())
    SelectDeselectAll(i);