【发布时间】:2019-06-28 06:18:36
【问题描述】:
【问题讨论】:
-
老实说,我不知道你想说什么。如果您添加图片以显示您隐藏的内容,则此帖子可能会有点更有意义。
-
嗯?你现在想做什么?你的问题令人困惑。还有,
private怎么解决不了?
标签: c# unity3d unity-editor
【问题讨论】:
private怎么解决不了?
标签: c# unity3d unity-editor
我建议创建新属性以获得更多控制。
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)。并完成。
【讨论】:
根据我从你措辞非常糟糕的问题中了解到的情况,我设法得出结论,你需要attributes
[SerializeField]
private CustomClass x;
是在检查器中显示的私有字段。
[HideInInspector]
public CustomClass x;
是在检查器中不可见的公共字段。
【讨论】: