【问题标题】:why GetComponent returns null reference for imageEffect?为什么 GetComponent 为 imageEffect 返回空引用?
【发布时间】:2015-05-02 14:59:16
【问题描述】:

这个问题是无法解决的还是什么?我不需要提供任何代码示例,它对任何人都不起作用!我不知道它怎么可能,你只需要试试这个:GetComponent<DepthOfField>().enabled = false;

假设我们有一个MainCamera 对象,我们将其附加一个DepthOfField 图像效果脚本。我们创建另一个名为whatever 的脚本并将其附加到MainCamera,在whatever 脚​​本中,我们只是叫这个:

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

它不应该工作吗?它没有,即使脚本附加到主摄像头,它也会返回空引用异常。它可以修复吗?如果是的话,我需要它!

【问题讨论】:

  • 问题可能是 DepthOfField 是来自 javascript / unityscript 的类,而您正试图从 C# 访问它。如果我没记错的话,存在一些依赖问题,它允许您从 JS 访问 C# 类,或者反过来,但不能同时访问两者。在较新的统一版本中,所有后期效果都被重写为 C# 类。因此,将您的自定义组件 whatever 重写为 Javascript/Unityscript 组件可以解决您的问题。
  • 我强烈建议您在发布之前使用谷歌,类似的问题在这里answers.unity3d.com/questions/707774/…,其中一个答案会将您重定向到适合您问题的解决方案。

标签: c# unity3d gameobject


【解决方案1】:

它应该可以工作,因为它们都附加到同一个 GameObject。不过,您可以尝试许多其他方法来解决此问题。

你可以这样做

 DepthOfField myDept;

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

或者您可以将 DepthOfField public 然后从编辑器分配 DepthOfField。例如,

public DepthOfField myDept; 

//将MainCamera GameObject从场景中拖放到这里,它会自动将DepthOfField脚本分配给myDept。

那你就可以了

myDept.enabled = false;

为此,必须将 DepthOfField 附加到 MainCamera 游戏对象。

【讨论】:

  • 问题是我的项目中有 2 个 DepthOfField 脚本,而且越来越晕
猜你喜欢
  • 2014-05-19
  • 2015-05-01
  • 2017-01-17
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 2023-01-08
  • 2019-09-07
  • 2021-01-26
相关资源
最近更新 更多