Unity中UI Toolkit自定义Inspector在运行模式下消失问题
UI Toolkit自定义Inspector运行模式消失的解决办法
常见修复方案
1. 规范Editor类的定义
你的自定义Inspector对应的Editor类必须满足以下要求:
- 继承自
UnityEditor.Editor - 用
[CustomEditor(typeof(你的目标脚本类))]特性绑定到目标脚本 - 若需要在运行模式下编辑目标对象,给目标脚本添加
[ExecuteInEditMode]特性(注意:这会让脚本的Awake/Start等方法在编辑模式也执行,按需使用)
示例代码:
using UnityEditor; using UnityEditor.UIElements; using UnityEngine; [CustomEditor(typeof(YourTargetScript))] public class YourTargetScriptEditor : Editor { public VisualTreeAsset uXML; public override VisualElement CreateInspectorGUI() { var root = new VisualElement(); if (uXML == null) { Debug.LogError("UI Document 引用为空"); return root; } uXML.CloneTree(root); return root; } }
2. 验证运行模式下的资源引用
运行模式下序列化的VisualTreeAsset可能出现引用失效问题,可尝试:
- 临时将uXML文件移入
Resources文件夹,通过Resources.Load<VisualTreeAsset>("资源相对路径")加载替代Inspector赋值,测试是否恢复正常 - 检查uXML文件的Importer设置,确保未勾选仅在编辑模式可用的选项
3. 强制Inspector在运行模式刷新
在Editor类中添加[CanEditMultipleObjects]特性,或在生命周期方法中注册刷新事件:
private void OnEnable() { Selection.selectionChanged += Repaint; } private void OnDisable() { Selection.selectionChanged -= Repaint; }
4. 排查版本兼容性问题
部分旧版Unity的UI Toolkit在运行模式下的Inspector支持存在bug,建议升级到2022.3+的LTS版本测试。
问题表现:进入运行模式后自定义Inspector消失,退出运行模式后恢复:
内容的提问来源于stack exchange,提问作者Obscure021
相关产品推荐
相关产品推荐

