Массив объектов является нулевым после завершения Awake () - PullRequest
0 голосов
/ 26 октября 2019

У меня есть простой контроллер шагов, прикрепленный к моему объекту игрока. У него есть группа [SerializeField], которая представляет собой просто набор звуков шагов на разных поверхностях.

В моей функции void Awake () я вызываю этот код:

Debug.Log(sandClips[UnityEngine.Random.Range(0, sandClips.Length)]);

И это правильновозвращает один из 4 клипов в этом массиве с сообщением в консоли:

footstep_sand_run_01 (UnityEngine.AudioClip)

Но в этом же файле у меня есть другая функция, объявленная так:

public AudioClip GetRandomClip(Vector3 location)

и если я пытаюсь вызвать ту же самую строку кода, я получаю следующую ошибку:

NullReferenceException: Object reference not set to an instance of an object

Кажется, что почему-то я теряю этот массив звуков, как только выхожу из части Awake (),Что мне не хватает? Я не могу себе представить, что это что-то особенно сложное, но в этот час мой мозг в конце.

Спасибо!

1 Ответ

0 голосов
/ 28 октября 2019

Таким образом, я решил свою проблему, и это было действительно глупо, я пропустил ее.

В моем FirstPersonController я создал копию своего класса контроллера Footsteps и использовал GetComponent () во время его метода Start (). Тогда мне просто нужно было убедиться, что я ссылаюсь на эту экземплярную копию, а не на ту универсальную вещь, которую я ударил.

Я все еще не понимаю, как она показывается как заполненная во время метода Awake (), но она работает, так что всехорошо.

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