如何在Unity Editor中为PrefixLabel着色?

时间:2018-07-18 08:37:37

标签: unity3d customization unity3d-editor unity-editor

我的问题很简单:我只想使用EditorGUILayout.PrefixLabel,但将文本颜色更改为白色。

到目前为止我尝试过的一些事情:

var old = EditorStyles.label.normal.textColor;
EditorStyles.label.normal.textColor = Color.white;
EditorGUILayout.PrefixLabel("label Text");
EditorStyles.label.normal.textColor = old;


var old = EditorStyles.label.normal.textColor;
EditorStyles.label.normal.textColor = Color.white;
EditorGUILayout.PrefixLabel("label Text", new GUIStyle(EditorStyles.label));
EditorStyles.label.normal.textColor = old;


EditorGUILayout.PrefixLabel("label Text", new GUIStyle(EditorStyles.whiteLabel));


var old = GUI.contentColor;
EditorStyles.label.normal.textColor = Color.white;
EditorGUILayout.PrefixLabel("label Text");
GUI.contentColor = old;


var old = GUI.skin.label.normal.textColor;
GUI.skin.label.normal.textColor = Color.white;
EditorGUILayout.PrefixLabel("label Text");
GUI.skin.label.normal.textColor = old;


whiteTextStyle= new GUIStyle(EditorStyles.label) { 
    normal = { 
        textColor = TEXT_COLOR_SELECTED 
    } 
};
EditorGUILayout.PrefixLabel("label Text", whiteTextStyle);

但是到目前为止,我还没有运气。 我可以轻松更改所有其他元素的颜色,但是对于PrefixLabel来说,什么都没有起作用。 我想坚持使用PrefixLabel,因为它可以减少所有标签和字段排列的代码量。

是否有其他提示我可以尝试?

1 个答案:

答案 0 :(得分:0)

EditorStyles.label.normal.textColor已经可以使用,但是我不得不在EditorGUILayout.XYField之后重新设置颜色,因为PrefixLabel直到现场调用才绘制。

var old = EditorStyles.label.normal.textColor;
EditorStyles.label.normal.textColor = Color.white;
EditorGUILayout.PrefixLabel("label Text");

EditorGUILayout.IntField(5);

EditorStyles.label.normal.textColor = old;