【问题标题】:how to make my 3D Gameobject invisible if no renderer attached in UNITY?如果 UNITY 中没有附加渲染器,如何使我的 3D 游戏对象不可见?
【发布时间】:2017-05-21 06:11:07
【问题描述】:

我有 3D 对象,我想通过关闭其渲染使其不可见。但是当我在运行时运行代码时,它会显示 ::
" 回调中的异常:System.Reflection.TargetInvocationException: 调用目标已抛出异常。---> UnityEngine.MissingComponentException: “3dObject”游戏对象没有附加“渲染器”,但脚本正在尝试访问它。
我想知道是否没有渲染器,那么我如何能够在场景/游戏视图中看到该对象。而且在检查器中什么也没有(网格渲染器/渲染器/网格过滤器)。
我正在使用 c#this.GetComponent<Renderer>().enabled=true;
我正在使用 vuforia 并希望在调用 Tracking Lost 函数后将最后跟踪的对象保留在屏幕上。
有没有其他方法可以做到这一点...?
我是团结的新手,我知道这是一个非常基本的问题,但没有得到任何东西。需要帮忙..

【问题讨论】:

  • 我在附件中没有看到网格渲染器组件。 'this.GetComponent().enabled=true;'只会在这个游戏对象上获得渲染器组件,而不是在子游戏对象上。我认为您的渲染器位于此处也不存在的网格(网格过滤器)上。
  • 任何渲染器都不存在,但它仍然存在于场景/游戏视图中......它怎么可能......我没有得到。我只是从资产商店导入一个 .fbx 文件。但是在检查器中没有渲染器。怎么样?
  • @Nitesh 因为该游戏对象的一个​​(或多个)子对象附加了 MeshRenderer。
  • 对不起..在这个模型中有一个很长的子列表,其中一个是蒙皮网格渲染器。现在我的疑虑很清楚了。但有一件事,如何访问该特定 3D 模型的子节点上存在的所有渲染器
    我正在使用 :: Renderer[] ren = this.GetComponentsInChildren<Renderer>();

标签: c# unity3d vuforia renderer


【解决方案1】:

一种方法可能是:

  1. 创建一个名为:InvisibleGO 的新层。
  2. 将 GameObject 的图层设置为 InvisibleGO
  3. 然后就可以设置剔除遮罩了 每个摄像头上的摄像头仅显示您设置的图层 想要:

https://docs.unity3d.com/Manual/class-Camera.html

【讨论】:

  • 我正在使用 vuforia 制作增强现实应用程序,所以我有预制 AR 相机 .. 不确定这个东西是否能在不影响项目的情况下工作。但方法对其他项目有好处.. 会从中学到一些东西。 . 谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 1970-01-01
相关资源
最近更新 更多