我有两个类似的课程ClassA
和ClassB
。这两个类都包含一个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时,会检查“隐藏”字段。
我不明白什么是不同的,或者在设置属性的默认/初始值时涉及的其他因素。
理想情况下,我希望默认情况下都检查它们。
我可能缺少什么想法?
感谢您的时间,
利安
答案 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);
应该解决你的问题。