每日知识之Unity显示指定内容

类型越加越多,各种无用数据被暴露出来,需要做个隐藏,在此记录一下

1.在Editor下新建一个类 并继承Editor
2.在类上面添加声明(Unity中的CustomEditor(自定义编辑器)可以对继承了MonoBehavior脚本的类(当然还有其它类)提供了属性面板的展示和修改)
[CustomEditor(typeof(Text))]
public class TextEditor: Editor
3.序列化对象和获取对象
private SerializedObject test;
void OnEnable()
{
// 获取当前的序列化对象(target:当前检视面板中显示的对象)
test = new SerializedObject(target);
4.序列化属性和获取属性
private SerializedProperty type;
private SerializedProperty show;
// 抓取对应的序列化属性 这里的名字和你需要判断和显示的属性声明相同PS:不是类名
type = test.FindProperty(“text”);
show= test.FindProperty(“show”);
5.做显示隐藏
//检视面板 当面板内容发生变化时触发
public override void OnInspectorGUI()
{
// 从物体上抓取最新的信息
test.Update();
//显示type字段
EditorGUILayout.PropertyField(type);
// type.enumValueIndex 当前字段的内容
if(type.enumValueIndex == 1)
EditorGUILayout.PropertyField(show);
}
//应用属性更改
结束

代码块

using UnityEditor;
[CustomEditor(typeof(AniByNet))]
public class AniNetInspectorEditor : Editor
{
private SerializedObject test;
private SerializedProperty type;
private SerializedProperty show;

void OnEnable()
{
    test = new SerializedObject(target);
    type= test.FindProperty("text");
    show= test.FindProperty("show");
}

public override void OnInspectorGUI()
{
    test.Update();
    EditorGUILayout.PropertyField(type);
    if(type.enumValueIndex == 1)
		EditorGUILayout.PropertyField(show);
    test.ApplyModifiedProperties();
}

}

注意事项

1.会对所有暴露字段生效
2.默认字段为不显示