c# - 使用 UIElements/UI Builder 绘制默认检查器

标签 c# unity3d

我有一个 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 也放在折页中,以便设计人员可以使用自定义检查器,但每当他们需要一些他们看不到的高级内容时,他们可以使用默认检查器。

所以他们会看到这样的布局(默认检查器默认隐藏 :) ) enter image description here

关于c# - 使用 UIElements/UI Builder 绘制默认检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63977967/

相关文章:

c# - 带有 Texture2D 的 MonoGame XNA Helloworld

c# - 如何将 CanExecute 与 Mvvmcross 一起使用

c# - 如何检测 Unity 中发生碰撞的位置?

c# - 如何使用 C# 在 Unity 中解析复杂的 JSON 对象

c# - 试图统一调用方法。无法调用方法

c# - 无法使用connectionString连接到MySQL服务器

c# - .net 4 应用程序运行 .net 2.0 程序集

c# - 调用异步方法时到底发生了什么?

debugging - Xamarin Studio 5 Unity 加载项存储库

unity3d - 基于时间的评分统一