隐藏GameObjects以加快游戏性能

时间:2015-02-17 17:07:25

标签: c# unity3d

我的问题是,如果相机没有呈现GameObject,我怎么能隐藏它,但是当它回到相机视图时取消隐藏它?

我的代码如下:

void Update () {
     if (renderer.isVisible) {
         objectToHide.renderer.enabled = true;
     }
     else {
         objectToHide.renderer.enabled = false;
     }
}

问题是,对象变得隐藏,因此无法检测和取消隐藏。

感谢任何帮助!

(目标只是加快FPS并提高游戏性能)

2 个答案:

答案 0 :(得分:1)

你的回答很简单。游戏只能在相机视线中渲染物体。您可以隐藏对象,甚至禁用渲染器组件,但不用于内存管理或更好的处理。

有一些标准技术可以让游戏更有效率。其中一个是 LOD 详细程度。你有一个具有不同多边形和不同纹理分辨率的模型。当它靠近你使用最高的多边形和最高的纹理分辨率以获得更远的距离时,你可以使用较低的选项。

另一种技术是级别流式传输。如果你有一个很大的水平并且你想要在低内存上运行游戏或者不让玩家等待很长时间来进行等级加载,那么你必须这样做。如果你搜索一下,你可以在不同的引擎上找到很多信息。

最近的游戏可以选择树叶细节或环境细节。您可以为游戏的每个级别的细节创建一个图层,并且对于每个级别的选项,您都可以销毁这些对象。也许我错了,但是 renderer.enable 不能很好,因为对象仍然在游戏中,而游戏只是没有显示它。您必须更改许多组件才能使其正常工作并且控制所有组件很难。

答案 1 :(得分:0)

为了提高性能,最好在不需要时尽快销毁脚本和游戏对象。就像从游戏板上出来的子弹一样,只运行一次但已经完成的脚本,......