📜  在 inspecotr unity 中显示私有字段 - C# (1)

📅  最后修改于: 2023-12-03 15:07:40.464000             🧑  作者: Mango

在 Inspector Unity 中显示私有字段 - C#

Unity中的Inspector允许我们查看某个游戏对象上的所有组件和属性。默认情况下,只有公共字段和属性(例如,public int myField)才会显示在Inspector中。然而,有时候我们需要访问私有字段或属性(例如,private int myField)以便在Inspector中进行调试或编辑。

下面是两种方法来显示私有字段或属性:

1. 使用SerializeField

可以使用SerializeField属性来将私有字段或属性标记为序列化字段。序列化字段将在Inspector中显示,这使得可以编辑它们。例如:

using UnityEngine;
using System.Collections;

public class MyClass : MonoBehaviour
{
    [SerializeField]
    private int myPrivateField;
}

通过这种方式,myPrivateField将会在Inspector中出现,可以直接在Inspector中编辑它。

请注意,SerializeField属性只能用于非静态字段或属性。

2. 编写自定义Inspector

如果你想要更高级的编辑器,可以通过编写自定义Inspector来显示私有字段或属性。我们可以通过继承Editor类来编写自定义Inspector。

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(MyClass))]
public class MyClassEditor : Editor
{
    SerializedProperty myPrivateField;

    void OnEnable()
    {
        myPrivateField = serializedObject.FindProperty("myPrivateField");
    }

    public override void OnInspectorGUI()
    {
        serializedObject.Update();
        EditorGUILayout.PropertyField(myPrivateField, true);
        serializedObject.ApplyModifiedProperties();
    }
}

上面的代码会将myPrivateField显示在Inspector中,并允许我们进行编辑。

请注意,上述代码需要使用Editor和EditorGUILayout命名空间。

以上就是两种显示私有字段或属性的方法。使用SerializeField属性是很简单的,但如果需要更高级的编辑器,则需要编写自定义Inspector。

参考文档:Unity User Manual