UnityEvent возвращает Object как параметры вместо GameObject - PullRequest
0 голосов
/ 02 марта 2020

У меня есть компонент, прикрепленный к Gameobject, который содержит событие с Gameobject в качестве параметра:

[System.Serializable]
public class ReleasedOnDifferent : UnityEvent<GameObject>
{
}
releasedOnDifferent.Invoke(this.gameObject);

событие связано с простой функцией следующим образом:

 public void releasedOnDifferent(GameObject gameObject)
 {
 }

from ispector

, но когда вызывается событие, это происходит:

ArgumentException: объект типа 'UnityEngine.Object' не может быть преобразован в тип 'UnityEngine.GameObject'.

кажется, что когда Invoke(this.gameObject) вызывается, объект Game передается вместо Gameobject

Я что-то упустил?

1 Ответ

1 голос
/ 02 марта 2020

UnityEvent может иметь два типа обратных вызовов:

  • Stati c: Stati c вызовы являются предварительно настроенными вызовами с предварительно сконфигурированными значениями, которые установлены в пользовательском интерфейсе. Это означает, что когда вызывается обратный вызов, целевая функция вызывается с аргументом, который был введен в пользовательский интерфейс.

Под пользовательским интерфейсом здесь подразумевается инспектор.

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

Вы выбрали stati c версию метода и передача None, которая в основном является заполнителем null и, вероятно, причина, по которой он не может быть преобразован в действительный GameObject.

Вам нужно выбрать версию метода dynamici c в верхней части всплывающего меню, чтобы получить параметр Dynami c!

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