Как я могу ссылаться на несколько компонентов одного типа в кнопке в Unity3D? - PullRequest
0 голосов
/ 19 сентября 2018

Ситуация

У меня есть класс компонента SetTrigger : MonoBehaviour.Это долго и не имеет значения для размещения кода здесь.В нем я могу выбрать строковое значение _targetTrigger из всех параметров триггера, на которые я ссылаюсь Animator.

Чем у меня есть кнопка GameObject с несколькими из этих SetTrigger компонентов, так чтоЯ могу выбрать несколько Триггеров из нескольких Animator с.

Итак, скажем, у меня есть 2 SetTrigger компонента, ссылающиеся на то же самое Animator на моем объекте кнопки (который также имеет Button компонент).

  • На одном я установил _targetTrigger на StartButton.
  • На другом я установил _targetTrigger на Initialize.

Чем я добавил оба к onClick компонента Button в инспекторе, вызывающем метод Set (который устанавливает триггер по имени _targetTrigger для ссылочной Animator, используя animator.SetTrigger(_targetTrigger)).

Таким образом, я ожидал бы, что оба Триггера, StartButton и Initialize будут установлены (это работало раньше, когда я устанавливал оба Триггера, делая это "обычным" способом, используя только непосредственно Animator.SetTrigger(string)).

Проблема

Когда я нажимаю Button, метод SetTrigger.Set() вызывается только со значением StartButton, но дважды,

Это заставляет меня думать, что, по-видимому, компонент Button использует только первое столкновение с SetTrigger в GameObject для обеих записей onClick (вероятно, внутреннее, для этого используется что-то вроде GetComponent).

(Как) Можно ли использовать несколько компонентов одного типа, но с разными значениями для onClick для Button?


Edit
Я заметил, что он, конечно, может получить только один компонент, так как уже во всплывающем окне выбора компонента / метода в onClick кнопки есть только одна запись SetTrigger, хотя у меня есть компонент дважды ...

На данный момент у меня есть альтернативные решения / обходные пути:

  • У меня есть один дочерний GameObject для каждого требуемого триггера, каждый из которых имеет только один SetTrigger и ссылается на них.(Не очень).

  • Переписать компонент SetTrigger, чтобы вместо него использовать список триггеров.Имейте только этот один компонент.

    Мне больше нравится второй, но теперь я должен переписать весь сценарий инспектора для него, а также с использованием ReorderableList, и это также очень тяжело для того, чтобы иметь несколько триггеров ...

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