如何从新的MonoBehaviour隐藏脚本字段

时间:2018-03-15 13:59:53

标签: c# unity3d unity-editor

我想隐藏新脚本中的脚本字段。 (每个脚本默认显示脚本)

enter image description here

一种方法是为我们的脚本编写CustomEditor

但我希望更快地做到这一点。没有为我的新脚本编写编辑器脚本。

2 个答案:

答案 0 :(得分:0)

我建议创建新属性以获得更多控制权。

using System;

[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class HideScriptField : Attribute { }

作为具有此新属性的所有脚本的编辑器脚本

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(MonoBehaviour), true)]
public class DefaultMonoBehaviourEditor : Editor
{
    private bool hideScriptField;

    private void OnEnable()
    {
        hideScriptField = target.GetType().GetCustomAttributes(typeof(HideScriptField), false).Length > 0;
    }

    public override void OnInspectorGUI()
    {
        if (hideScriptField)
        {
            serializedObject.Update();
            EditorGUI.BeginChangeCheck();
            DrawPropertiesExcluding(serializedObject, "m_Script");
            if (EditorGUI.EndChangeCheck())
                serializedObject.ApplyModifiedProperties();
        }
        else
        {
            base.OnInspectorGUI();
        }
    }
}

现在,在每个新的MonoBehaviour脚本中,如果要隐藏脚本字段,可以在其上添加此属性(HideScriptField)。并完成了。

答案 1 :(得分:0)

根据我对你措辞极其糟糕的问题的理解,我得出结论,你需要attributes

[SerializeField]
private CustomClass x;

是一个在检查员中显示的私人字段。

[HideInInspector]
public CustomClass x;

是一个在检查器中不可见的公共字段。