Как сохранить значения UnityEvent?

Программирование на Юнити.

Как сохранить значения UnityEvent?

Сообщение KingPeas 04 июл 2017, 19:06

Проблема в следующем. У меня есть объект от MonoBehaivour, в котором определены несколько UnityEvent.
Синтаксис:
Используется csharp
public class PovEvents : MonoBehaviour {

    public bool UseEnter = false;
    [SerializeField]
    public UnityEvent EnterToPoV;
}

Мне хочется обращаться к этому обработчику в редакторе из объекта который имеет список таких объектов. В редакторе со списком я получаю доступ к ссылке на PovEvents и если крыжик у события включен я отрисовываю его так
Синтаксис:
Используется csharp
private void drawEvntTable(Rect r, PovEvents pov, string evnt)
    {
        EditorGUI.BeginChangeCheck();
        SerializedObject so = new SerializedObject(pov);
        SerializedProperty p = so.FindProperty(evnt);
        EditorGUI.PropertyField(r, p, (GUIContent)null, true);
        if (EditorGUI.EndChangeCheck())
        {
            EditorUtility.SetDirty(pov);
            //so.ApplyModifiedProperties() ;
            //so.UpdateIfRequiredOrScript();
        }
    }

Все рисуется, все замечательно, за исключением одного но: Когда я добавляю обработчик и настраиваю чтобы в некоем объекте через GameObject.SetActive() устанавливалось true, то после того как я ухожу с объекта и опять к нему возвращаюсь я вижу что галочка с true сбрасывается на false. Пробовал и другие варианты обновления объекта, они закоменчены, тоже не помогает.

Подскажите в какую сторону копать? :-B
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ...
Мой первый плагин PropertyDrawerCollection
Аватара пользователя
KingPeas
UNIт
 
Сообщения: 78
Зарегистрирован: 12 сен 2012, 12:34
Откуда: Новосибирск
Skype: evgeniygurlev
  • Сайт
  • ICQ

Re: Как сохранить значения UnityEvent?

Сообщение samana 06 июл 2017, 11:32

По-идее вот так должно было сработать:

Синтаксис:
Используется csharp
SerializedObject so = new SerializedObject(pov);
so.Update();

SerializedProperty p = so.FindProperty(evnt);
EditorGUI.PropertyField(r, p, (GUIContent)null, true);

so.ApplyModifiedProperties();


Но следующий момент непонятен:
KingPeas писал(а):гда я добавляю обработчик и настраиваю чтобы в некоем объекте через GameObject.SetActive() устанавливалось true, то после того как я ухожу с объекта и опять к нему возвращаюсь я вижу что галочка с true сбрасывается на false.

То-есть это у вас должно в эдиторе работать, а не в игре? Просто не могу воспроизвести ситуацию.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Как сохранить значения UnityEvent?

Сообщение KingPeas 07 июл 2017, 14:04

да все делается внутри окна редактора.
Таким образом я попробовал (so.Update(); + so.ApplyModifiedProperties();). Не помогает.
Я получаю в редакторе ссылку на скрипт с событиями, а сами события в они ведь тоже ссылками хранятся. Может в этом собака зарыта
Картинку приложил
У вас нет доступа для просмотра вложений в этом сообщении.
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ...
Мой первый плагин PropertyDrawerCollection
Аватара пользователя
KingPeas
UNIт
 
Сообщения: 78
Зарегистрирован: 12 сен 2012, 12:34
Откуда: Новосибирск
Skype: evgeniygurlev
  • Сайт
  • ICQ


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6