Событие анимации Unity - функция не выбрана - PullRequest
0 голосов
/ 04 июня 2019

Я гуглил и много пробовал и сейчас просто схожу с ума, потому что это простая вещь, решение которой занимает много времени. Таким образом, в Интернете есть два типа сообщений:

  1. Консоль выдает ошибку «Не выбрана функция», и решение состоит в том, что некоторые пользователи случайно добавили событие анимации и не установили его. <- Это не то, что я ищу </strong>
  2. Я добавил событие анимации в свой клип, но, щелкнув раскрывающийся список «Функция», появляется сообщение «Функция не выбрана» и я не могу ничего выбрать. <- Это то, что я ищу. </strong> На сообщения такого типа не было ответа.

Вот как это выглядит : enter image description here

Иерархия:

Объект 1
Объект 1.1 <- </strong> Имеет скрипт, с которого я запускаю анимацию
Объект 1.2 <- </strong> Имеет аниматора. Вращать и масштабировать объект 1.2

Дополнительная информация: Да, сначала я выбрал свой объект 1.2, затем выделил правый клип в окне анимации и добавил событие анимации.

1 Ответ

2 голосов
/ 04 июня 2019

На сообщения такого типа не было ответа

Пожалуйста, позвольте мне усомниться в этом.


Просто убедитесь, что ваша установка удовлетворяет следующим условиям:

AnimationEvent требуется

  • Компонент, из которого вы хотите использовать метод, присоединяется к тому же GameObject, что и Animator компонент
  • метод, который вы хотите вызвать, имеет доступность и тип возврата public void
  • метод, который вы хотите вызвать, имеет нет или максимум один параметр
  • поддерживаемые типы для параметра: int, float, string, bool или UnityEngine.Object

Поскольку ваш скрипт находится в другом GameObject, вы можете перенаправить вызов, например как

public Redirector : MonoBehaviour
{
    // Either drag in via Inspector
    [SerializeField] private ScriptOnOtherObject _scriptOnOtherObject;

    // or get at runtime if you are always sure about the hierachy
    private void Awake()
    {
        _scriptOnOtherObject = transform.parent.GetComponent<ScriptOnOtherObject>();
    }

    // and now call this from the AnimationEvent
    public void DoIt()
    {
        _scriptOnOtherObject.TheMethodToCall();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...