【问题标题】:Unity editor - How to stop field from turning blue when its editedUnity 编辑器 - 如何在编辑时阻止字段变为蓝色
【发布时间】:2019-03-22 21:55:52
【问题描述】:

当您按下按钮时,我正在 Unity 中制作一个工具来为多个平台构建您的项目。

我从该工具的首选项窗口开始,然后想出了一件令人讨厌的事情。每当我更改 EnumPopup 字段的枚举值时,该字段在编辑器窗口中变为蓝色。有没有办法禁用它?

看到第二张图片中的字段不是蓝色的,而第三张图片中的字段变成了蓝色?如何防止这种情况发生?

提前致谢!

【问题讨论】:

  • 请不要以图片的形式发布代码,而是以文本形式发布代码。

标签: unity3d unity-editor


【解决方案1】:

如果没有其余代码,很难提供帮助。

这是 Unity 的内置行为。我尝试了很多东西see here 来禁用/覆盖前缀标签的内置颜色,但到目前为止没有运气。


但是,一种解决方法可能是改用独立的EditorGUI.LabelField,它不会受到EnumPopupEditorGUIUtility.labelWidth 的影响:

var LabelRect = new Rect(
    FILEMANAGEMENT_ENUMFIELD_RECT.x, 
    FILEMANAGEMENT_ENUMFIELD_RECT.y,
    // use the current label width
    EditorGUIUtility.labelWidth, 
    FILEMANAGEMENT_ENUMFIELD_RECT.height
);

var EnumRect = new Rect(
    FILEMANAGEMENT_ENUMFIELD_RECT.x + EditorGUIUtility.labelWidth, 
    FILEMANAGEMENT_ENUMFIELD_RECT.y, 
    FILEMANAGEMENT_ENUMFIELD_RECT.width - EditorGUIUtility.labelWidth, 
    FILEMANAGEMENT_ENUMFIELD_RECT.height
);

EditorGUI.LabelField(LabelRect, "File relative to");
QuickBuilder.Settings.Relation = (QuickBuilder.Settings.PathRelation)EditorGUI.EnumPopup(EnumRect, QuickBuilder.Settings.Relation);

如您所见,标签没有变成蓝色,而宽度保持灵活


旁注
而不是直接通过编辑脚本设置值 QuickBuilder.Settings.Relation = 您应该始终尝试使用正确的 SerializedProperty。它处理诸如撤消/重做之类的事情,并将相应的对象和场景标记为dirty

你使用EditorGUI而不是EditorGUILayout还有什么特殊原因吗?后者不需要设置Rects。

EditorGUILayout.BeginHorizontal();
{
    EditorGUILayout.LabelField("File relative to", GUILayout.Width(EditorGUIUtility.labelWidth));
    QuickBuilder.Settings.Relation = (QuickBuilder.Settings.PathRelation)EditorGUILayout.EnumPopup(QuickBuilder.Settings.Relation);
}
EditorGUILayout.EndHorizontal();

【讨论】:

  • 谢谢,我去看看!!是的,我应该实现序列化属性,但我只是想在屏幕上显示一些东西,将来会改变它:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2011-02-13
  • 2011-01-10
  • 1970-01-01
相关资源
最近更新 更多