Unity工具类Editor自定义Inspector面板踩坑 显示隐藏没了?

1、先说遇到的问题
首先是有问题的GameObject属性显示
左边是普通场景物体,右边是预制体
上边是不正常,下边是正常情况
在这里插入图片描述

一开始我只是以为属性显示的GUI排列怪怪的,有点陌生,等我习惯性的要去点击隐藏物体的时候 我直接一脸问号?????

2、查找原因

1、我一开始以为是Unity的project setting或者 首选项 里的设置没对,一通操作把每个设置都看完了,得,也没白忙活,起码排除了这个原因

2、然后我以为是自定义Editer,对GameObject的Inspector面板属性显示布局做了修改,我全局搜索一看,只有一个工具类关联了

[CustomEditor(typeof(GameObject))]
public class XXXXXXXXXX : Editor
{
}

但是里面没有重写 OnInspectorGUI() ,如下

public override void OnInspectorGUI()
{
}

3、水落石出

我又一通操作到处查,结论是:
1、工具类关联GameObject的时候

[CustomEditor(typeof(GameObject))]
public class XXXXXXXXXX : Editor
{
}

Inspector属性绘制由父类 Editor.OnInspectorGUI() 完成
其余时候,由Unity内置的 GameObjectEditor.OnInspectorGUI() 完成
2、重点
由父类 Editor.OnInspectorGUI() 对GameObject的属性进行绘制时,有BUG,再次看图
在这里插入图片描述

很多都没有绘制出来:
1、显示/隐藏勾选框
2、Tag Layer 下拉按钮
如果是预制体
3、打开和选中预制体的按钮
4、应用预制体修改的下拉按钮

4、结论
2020.3版本情况下
Unity一些内置组件,如 GameObject ,自定义其Inspector面板显示时,或者工具类关联了 这些组件

[CustomEditor(typeof(GameObject))]

那么此时由父类

Editor.OnInspectorGUI()

进行绘制时,会出现BUG,导致部分属性无法绘制到 Inspector 面板上

5、解决方法

1、工具类不要关联这些内置组件

[CustomEditor(typeof(GameObject))]

2、模仿正常的面板显示布局
在这里插入图片描述
重写 OnInspectorGUI()

public override void OnInspectorGUI()
{
}

些许示范一下

public override void OnInspectorGUI()
    {
        serializedObject.Update();

        GameObject myObj = target as GameObject;
		
        EditorGUILayout.BeginHorizontal();
        myObj.SetActive(EditorGUILayout.Toggle(myObj.activeSelf, GUILayout.Width(20)));
        myObj.name = EditorGUILayout.TextField(myObj.name, GUILayout.ExpandWidth(true));
        myObj.isStatic = EditorGUILayout.Toggle(myObj.isStatic, GUILayout.Width(15));
        EditorGUILayout.LabelField("Static", GUILayout.Width(50));
        EditorGUILayout.EndHorizontal();
        serializedObject.ApplyModifiedProperties();
    }

效果如下图
在这里插入图片描述
这里我只写了 显示/隐藏勾选框、名称、是否静态
其余放模仿正常Inspector面板布局写就行了

完结撒花

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水星程序店

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值