Unity Доступ к PlayOneShot из другого скрипта вызывает ошибку ссылки на объект - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу воспроизвести AudioClips из массива AudioClips, и я попытался заставить его работать с AudioSource.PlayOneShot, но по какой-то причине я получаю сообщение об ошибке «ссылка на объект не установлен для экземпляра объекта» в строке где находится PlayOneShot, когда я пытаюсь получить к нему доступ из другого скрипта. Итак, я сделал пустой игровой объект и прикрепил к нему компонент AudioSource и скрипт AudioControler. Сценарий выглядит следующим образом:

public AudioClip[] clips;
AudioSource audioSource;
private void Start(){
    audioSource = GetComponent<AudioSource>();
  }
public void PlaySound(){
    audioSource.PlayOneShot(clips[0], 1);
  }

Затем я прикрепил несколько аудиоклипов к массиву «клипы» в редакторе и вызвал метод PlaySound () из другого сценария, и он выдает ошибку. Есть идеи, что я тут не так сделал?

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

publi c void PlaySound () {
if (audioSource! = Null)
audioSource.PlayOneShot (clips [0], 1);

}

0 голосов
/ 30 апреля 2020

Проблема была - Получая доступ к монобезопасному сценарию из другого сценария, я связал его создание с помощью new, и это была действительно плохая идея! Не пытайтесь создавать экземпляры сценариев, которые наследуются от MonoBehaviour с new !!! Это помогло мне понять: MonoBehaviour

Решение, которое я использовал для решения проблемы - я создал класс Singleton и получил доступ к нужному методу через него. Похоже, самое простое решение этой проблемы. Посмотрите на: Синглтон

Другие полезные темы: Синглтон

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

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