2015-05-02 4 views
1

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

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

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

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

+0

Проблема может заключаться в том, что DepthOfField является классом из javascript/unityscript, и вы пытаетесь получить к нему доступ с C#. Когда я правильно помню, была проблема с зависимостями, которая позволила вам получить доступ к классам C# из JS или наоборот, но не к обоим. В версиях нового единства все пост-эффекты были переписаны как классы C#. Итак, переписывание вашего пользовательского компонента 'whatever' в качестве компонента Javascript/Unityscript может решить вашу проблему. – Oliver

+0

Я бы настоятельно рекомендовал вам google перед публикацией, аналогичный вопрос здесь http://answers.unity3d.com/questions/707774/cant-access-depth-of-field.html, один из ответов перенаправляет вас на правильное решение для вашей проблемы. – Billatron

ответ

1

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

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

DepthOfField myDept; 

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

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

public DepthOfField myDept; 

// Перетаскивание в MainCamera GameObject от сцены к этому, и он будет автоматически назначать сценарий DepthOfField к myDept.

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

myDept.enabled = false; 

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

+1

проблема заключалась в том, что у меня было 2 скрипта DepthOfField в моем проекте, и у него закружилась голова –

Смежные вопросы