forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D/GUI (http://forum.boolean.name/forumdisplay.php?f=167)
-   -   EditorGUILayout.EnumPopup (http://forum.boolean.name/showthread.php?t=17938)

Lestar 26.02.2013 04:35

EditorGUILayout.EnumPopup
 
Имеем простой класс
Код:

public class MyClass
{
  public string result="";
}

Делаем для него расширение в инспекторе и засовываем туда enum
Код:

[CustomEditor(typeof(MyClass))]
public class ClassExp : Editor
{
 public enum MyEnum
  {
    var1, var2, var3, var4
  }
  MyEnum myEnum=MyEnum.var2;

  override public void OnInspectorGUI()
    {
      MyClass mClass=(MyClass)target;
      myEnum = (MyEnum)EditorGUILayout.EnumPopup("Select new variable:",myEnum);
      mClass.result=myEnum.ToString();
    }
}

В итоге получаем для нашего обьекта дополнительное поле в инспекторе. Выставляем в инспекторе значение энума отличное от var2, запускаем плеймод. В итоге в инспекторе видим дефолтное значение перечислителя var2. С какого перепугу за три часа причину так и не нашел. Приводить энум к инту пробовал(советовали на офф форуме)- результат тот же, сбрасывает на значение, установленное при обьявлении.

pax 26.02.2013 07:56

Ответ: EditorGUILayout.EnumPopup
 
Попробуй в конце написать
PHP код:

if (GUI.changedEditorUtility.SetDirty(mClass); 


Lestar 26.02.2013 10:21

Ответ: EditorGUILayout.EnumPopup
 
Печально, но все одно сбрасывает.

pax 26.02.2013 10:29

Ответ: EditorGUILayout.EnumPopup
 
Нашел ошибку. Надо добавить в редактор инициализацию переменной значением из скрипта:
PHP код:

void OnEnable()
{
   
myEnum = (MyEnum)Enum.Parsetypeof(MyEnum),((MyClass)target).result);




Часовой пояс GMT +4, время: 13:56.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot