答案 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;
是一个在检查器中不可见的公共字段。