Unity Editor弹出栏错误

时间:2014-01-10 12:02:41

标签: c# user-interface unity3d

我已经创建了一个自定义编辑器弹出栏。但是,每次选择不同的游戏对象时,我选择的选项都会保持重置状态。

有人可以看看我的代码,看看它一直在重置的地方以及如何阻止这种情况发生?我输入的数据保留在那里,当我回到编辑器窗口时,我想要选择保持打开的选项更加方便。

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;



  }

1 个答案:

答案 0 :(得分:1)

  

然而,我选择的选择会在每次选择时保持重置   不同的游戏对象。

我猜你指的是analytic_Index。每次关闭Windows(或检查器)时,所有非序列化属性都将丢失。 Here详细说明了Unity中序列化的工作原理。

简而言之,关注您的具体案例。 Editor类(或EditorWindow)的每个成员变量都不会被序列化,因此当窗口关闭(或切换到播放模式)时它将丢失。通常,SerializedProperties属于特定资产(MonoBehaviorScriptableObject,..),因此您可以通过EditorWindow将这样的值放在您可视化的特定资产上(或Editor)。