我有一个 LevelEditor
脚本,它有一个用 UIBuilder 和 UIElements 构建的自定义检查器编辑器。
问题是我想在列表中缓存引用,但我不想为它制作自定义 ListView (在 UIElements 中实现起来有点困难,不值得花时间)所以我想我只是将 private List<MyType> _myVar;
设为[Serializefield]
然后在自定义的下方绘制 DefaultInspector。
我找到了执行此操作的方法 DrawDefaultInspector 但遗憾的是它什么也没做。
public override VisualElement CreateInspectorGUI()
{
_visualTree.CloneTree(_rootElement);
// My custom editor code
...
DrawDefaultInspector();
return _rootElement;
}
感谢任何帮助...
最佳答案
您需要通过UIBuilder(或通过代码通过_rootElement.Add(IMGUIVisualElement)
)放置一个IMGUIContainer
,然后在里面执行以下操作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;
}
我通常做的是将 DefaultInspector
也放在折页中,以便设计人员可以使用自定义检查器,但每当他们需要一些他们看不到的高级内容时,他们可以使用默认检查器。
关于c# - 使用 UIElements/UI Builder 绘制默认检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63977967/