我有一个自定义编辑器脚本,它有一个枚举来定义应用程序是否应该启动到设置或实时模式。如果我将枚举设置为 no,当我点击播放时,应用程序在没有选择的情况下正常工作,但随后枚举恢复到是状态,当我退出播放模式时,枚举又回到是状态,并且不是播放前选择的状态。这是我的脚本。
[CustomEditor(typeof(MainController))]
public class MainControllerEditor : Editor
{
public enum IsSetupEnabled
{
Yes,
No
};
public IsSetupEnabled SetupEnabled;
public override void OnInspectorGUI()
{
DrawDefaultInspector();
GUI.changed = false;
var mainController = (MainController)target;
SetupEnabled = (IsSetupEnabled)EditorGUILayout.EnumPopup("Setup Enabled", SetupEnabled);
if (GUI.changed)
{
switch (SetupEnabled)
{
case IsSetupEnabled.Yes:
mainController.SetupEnabled(true);
break;
case IsSetupEnabled.No:
mainController.SetupEnabled(false);
break;
default:
throw new ArgumentOutOfRangeException();
}
}
if (GUILayout.Button("Validate Configuration"))
{
mainController.Validate();
}
}
}
当我找到其他人遇到的这个问题的解决方案时,我尝试将枚举标记为 Serializable 以及在 Gui.Changed 中将 mainController 标记为脏,但它似乎对我没有任何作用。