Почему GetComponent возвращает нулевую ссылку для imageEffect?

Эта проблема неразрешима или что? Мне не нужно предоставлять какой-либо пример кода, он просто никому не работает! и я не знаю, как это возможно, вам просто нужно попробовать это: GetComponent<DepthOfField>().enabled = false;

предположим, что у нас есть MainCamera объект, и мы прикрепляем его DepthOfField Эффект изображения Script.and мы создаем еще один скрипт с именем whatever и прикрепить его к MainCamera и в whatever скрипт мы просто называем так:

void Start() {
  GetComponent<DepthOfField>().enabled = false;
}

это не должно работать? ну, это не так, он возвращает исключение нулевой ссылки, даже если скрипт присоединен к основной камере. Это исправимо? и если да, мне это нужно!

1 ответ

Решение

Это должно работать, потому что они оба привязаны к одному GameObject. Хотя есть много других способов исправить это.

Вы можете просто сделать

 DepthOfField myDept;

void Start() {
myDept = GameObject.Find("MainCamera").GetComponent<DepthOfField>();
myDept.enabled = false;
}

Или Вы можете сделать DepthOfField общедоступным, а затем назначить DepthOfField из редактора. Например,

public DepthOfField myDept; 

// Перетащите объект GameObject MainCamera со сцены на него, и он автоматически назначит сценарий DepthOfField для myDept.

Тогда вы можете сделать

myDept.enabled = false;

Чтобы это работало, DepthOfField должен быть присоединен к MainCamera GameObject.

Другие вопросы по тегам