Установка UnityEvents из редактора и заставить их вызывать правильный аргумент - PullRequest
0 голосов
/ 29 июня 2018

Я работаю с UnityEvents, как указано здесь . Там написано

При настройке UnityEvent в Инспекторе существует два типа поддерживаемые вызовы функций:

Статический. Статические вызовы - это предварительно настроенные вызовы, с предварительно настроенными значения, которые установлены в пользовательском интерфейсе. Это означает, что когда обратный вызов вызывается, целевая функция вызывается с аргументом, который имеет был введен в пользовательский интерфейс.

Dynamic. Динамические вызовы вызываются с помощью аргумент, который отправляется из кода, и это связано с типом UnityEvent, который вызывается. Пользовательский интерфейс фильтрует обратные вызовы и показывает только динамические вызовы, действительные для UnityEvent.

поэтому я получаю UnityEvent с аргументом, как в

 public class UnityEventFloat : UnityEvent<float>
    {
    }
public UnityEventFloat OnUpdateEvent;

Это появляется в инспекторе как

A callback entered to a UnityEvent

Как видите, я добавил функцию обратного вызова setWaitTime в UnityEvent. Функция имеет такую ​​форму public void setWaitTime(float t)

После этого UnityEvent будет вызываться в коде как

OnUpdateEvent.Invoke(aValue);

Попытка всего этого не работает должным образом, так как функция при вызове использует в качестве аргумента 0 (как в Инспекторе) Я хочу, чтобы она вызывала функцию с аргументом aValue (которая является внутренней переменной в коде)

Как я могу это сделать? Я думаю, что я не совсем понимаю цитату выше из документации. Моя ситуация похожа на «Статическую», и мне нужно, чтобы она работала как «Динамическая»


EDIT2:

Мне нужно решить проблему, поэтому я напишу это в ответе


EDIT: (Старый) Я попробовал предложенный ответ и получил это enter image description here Я не знаю, как это может решить проблему (обратите внимание, что теперь параметр является сценарием. Но это внутри того же сценария (SliderGestureControl))

1 Ответ

0 голосов
/ 29 июня 2018

Я наконец-то должен заставить это работать. Видимо я ошибся при выборе функции из выпадающего списка. Я выбрал функцию под меткой «Static», но должен был выбрать ту же функцию, но под меткой «Dynamic», которая была в верхней части списка (а я не видел).

При этом функция setWaitTime не имеет параметров в инспекторе (поэтому она динамически использует то, что ей дано UnityEvent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...