【问题标题】:Unity Editor Popup bar errorUnity 编辑器弹出栏错误
【发布时间】:2014-01-29 09:36:36
【问题描述】:

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

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

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;



  }

【问题讨论】:

    标签: c# user-interface unity3d


    【解决方案1】:

    但是每次我选择一个选项时,我选择的选项都会重置 不同的游戏对象。

    我猜你指的是analytic_Index。每次关闭窗口(或检查器)时,所有非序列化属性都将丢失。 Here 对序列化如何在 Unity 中工作的详尽描述。

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

    【讨论】:

    • 信息丰富的答案,所以我投了赞成票,但事实证明我没有将索引值设置为静态值。我这样做了,它已经修复了。
    • 是的,当然是静态作品,至少在您关闭编辑器之前:)。这可能取决于您在做什么,但在一般情况下,这可能不是最好的方法。
    猜你喜欢
    • 2020-01-05
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多