如何在统一

时间:2017-03-27 16:41:03

标签: c# unity3d

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

在A组:

[SerializeField]
private bool _overwrite = true;

public bool overwrite
{
    get { return _overwrite; }
    set { _overwrite = value; }
}

在B组:

[SerializeField]
private bool _hide = true;

public bool hide
{
    get { return _hide; }
    set { _hide = value; }
}

两个脚本都有一个CustomEditor脚本。在两个Editor脚本中,在OnInspectorGUI()方法中,以下两行用于将相应的bool添加到Inspector。

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

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

当我将ClassA添加到GameObject时,“Overwrite”字段未被选中,但是当我将ClassB添加到GameObject时,会检查“隐藏”字段。

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

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

我可能缺少什么想法?

感谢您的时间,

利安

2 个答案:

答案 0 :(得分:1)

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

void Reset() 
{
    _overwrite = true;
}

答案 1 :(得分:0)

什么是grabObject

如果是使用Editor脚本的OnEnable变量在target方法中找到引用的组件变量,则只需将编辑器脚本更改为:< / p>

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

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

应该解决你的问题。