C# 如何从新行为中隐藏脚本字段

C# 如何从新行为中隐藏脚本字段,c#,unity3d,unity-editor,C#,Unity3d,Unity Editor,我想对新脚本隐藏脚本字段。(默认情况下,每个脚本都会显示脚本) 一种方法是为脚本编写CustomEditor 但我想用更快的方式做到这一点。没有为我的新脚本编写编辑器脚本。我建议创建新属性以获得更多控制 using System; [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] public sealed class HideScriptField : Attribute {

我想对新脚本隐藏脚本字段。(默认情况下,每个脚本都会显示脚本)

一种方法是为脚本编写
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();
        }
    }
}

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

从你措辞极为拙劣的问题中我了解到,我设法得出结论,你需要

是在inspector中显示的专用字段

[HideInInspector]
public CustomClass x;

是一个公共字段,在inspector中不可见。

您是否在提出问题的那一刻回答了自己的问题?并非前所未闻,但我不明白为什么会在这种情况下这样做。它甚至不会给站点添加任何内容。@Vulpex您可以同时询问和回答自己的问题,只要它不是重复的,并且对其他人有用。虽然看起来人们讨厌它。如果你在回答中解释你做了什么,而不是仅仅发布代码,那就好了。老实说,我不知道你想说什么。如果你添加图片来显示你隐藏的内容,这篇文章可能会更有意义。嗯?你现在想做什么?你的问题令人困惑。还有,
private
如何解决这个问题?
[HideInInspector]
public CustomClass x;