如何统一设置自定义检查器字段的初始值

Lia*_*ris 5 c# unity-game-engine

我有两个类似的课程ClassAClassB。这两个类都包含一个布尔值:

在A类中:

[SerializeField]
private bool _overwrite = true;

public bool overwrite
{
    get { return _overwrite; }
    set { _overwrite = value; }
}
Run Code Online (Sandbox Code Playgroud)

B类:

[SerializeField]
private bool _hide = true;

public bool hide
{
    get { return _hide; }
    set { _hide = value; }
}
Run Code Online (Sandbox Code Playgroud)

两个脚本都有一个CustomEditor脚本。在两个编辑器脚本中,OnInspectorGUI()方法内部使用以下两行将相应的布尔值添加到检查器中。

ClassA.overwrite = EditorGUILayout.ToggleLeft("Overwrite", ClassA.overwrite);

ClassB.hide = EditorGUILayout.ToggleLeft("Hide", ClassB.hide);


当我将 ClassA 添加到游戏对象时,“覆盖”字段未被选中,但是当我将 ClassB 添加到游戏对象时,“隐藏”字段被选中。

我不明白有什么不同,或者设置属性的默认/初始值涉及什么其他因素。

理想情况下,我希望默认情况下检查它们。

有什么想法我可能会错过吗?

谢谢你的时间,

利亚姆

Bri*_*ien 4

MonoBehaviours 的方法Reset似乎它将提供您正在寻找的功能。它看起来像这样:

void Reset() 
{
    _overwrite = true;
}
Run Code Online (Sandbox Code Playgroud)