我想从新脚本中隐藏脚本字段。(每个脚本默认显示脚本)
一种方法是CustomEditor
为我们的脚本编写。
但我想要更快的方式做到这一点。无需为我的新脚本编写编辑器脚本。
我建议创建新属性以进行更多控制。
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
在其上添加此属性 ( )。并做了。
根据我从您措辞极差的问题中了解到的情况,我设法得出结论,您需要属性
[SerializeField]
private CustomClass x;
是在检查器中显示的私有字段。
[HideInInspector]
public CustomClass x;
是在检查器中不可见的公共字段。