Cod*_*rer 5 c# unity-game-engine
我有一个LevelEditor
脚本,其中有一个使用 UIBuilder 和 UIElements 构建的自定义检查器编辑器。问题是我想在列表中缓存引用,但我不想为它创建一个自定义列表视图(在 UIElements 中实现有点困难,不值得花时间),所以我想我只会制作private List<MyType> _myVar;
as[Serializefield]
和然后在自定义的下方绘制DefaultInspector 。
我找到了一个执行此DrawDefaultInspector 的方法,但不幸的是它什么也没做。
public override VisualElement CreateInspectorGUI()
{
_visualTree.CloneTree(_rootElement);
// My custom editor code
...
DrawDefaultInspector();
return _rootElement;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏...
您需要放置一个IMGUIContainer
via UIBuilder(或通过代码 via _rootElement.Add(IMGUIVisualElement)
),然后在内部执行以下操作CreateInspectorGUI
public override VisualElement CreateInspectorGUI()
{
_visualTree.CloneTree(_rootElement);
// Your custom editor code
...
// Drawing the default inspector
var defaultInspector = _rootElement.Q<IMGUIContainer>();
defaultInspector.onGUIHandler = () => DrawDefaultInspector();
return _rootElement;
}
Run Code Online (Sandbox Code Playgroud)
我通常做的是将其DefaultInspector
也放在折叠中,以便设计人员可以使用自定义检查器,但每当他们需要一些对他们不可见的高级内容时,他们可以使用默认检查器。