我已经创建了一个自定义编辑器弹出栏。但是,每次选择不同的游戏对象时,我选择的选项都会保持重置状态。
有人可以看看我的代码,看看它一直在重置的地方以及如何阻止这种情况发生?我输入的数据保留在那里,当我回到编辑器窗口时,我想要选择保持打开的选项更加方便。
string[] analytic_Options = {"None", "Button Press"};
private int analytic_Index = 0;
public override void OnInspectorGUI()
{
GUILayout.BeginVertical();
GUILayout.Space(10);
analytic_Index = EditorGUILayout.Popup(analytic_Index, analytic_Options);
UpdateEditorGUI();
GUILayout.Space(10);
GUILayout.EndVertical();
}
void UpdateEditorGUI()
{
switch(analytic_Index)
{
case 0: // No analytics selected
break;
case 1: // Button analytic info
string name_HolderString = EditorGUILayout.TextField("Event Category", target_Object.button_NameString);
if(target_Object.button_NameString != name_HolderString)
{
button_EventNameString = name_HolderString;
target_Object.button_NameString = name_HolderString;
}
break;
}
答案 0 :(得分:1)
然而,我选择的选择会在每次选择时保持重置 不同的游戏对象。
我猜你指的是analytic_Index
。每次关闭Windows(或检查器)时,所有非序列化属性都将丢失。 Here详细说明了Unity
中序列化的工作原理。
简而言之,关注您的具体案例。 Editor
类(或EditorWindow
)的每个成员变量都不会被序列化,因此当窗口关闭(或切换到播放模式)时它将丢失。通常,SerializedProperties属于特定资产(MonoBehavior
,ScriptableObject
,..),因此您可以通过EditorWindow
将这样的值放在您可视化的特定资产上(或Editor
)。