【问题标题】:How to optimize Unity scene with 125,000+ GameObjects?如何使用 125,000 多个游戏对象优化 Unity 场景?
【发布时间】:2019-11-02 03:01:53
【问题描述】:

我目前正在开发一个程序,该程序需要我在场景中的预定点(x、y、z)生成超过 125,000 个球体对象,但我遇到了明显的延迟问题。

在我给出细节之前,我想指出我已经搜索过关于这个主题的答案,但我无法找到答案,因为人们(可以理解)立即回退建议 OP不会产生太多对象,但是,在这种情况下,这不是一个选项,因为我需要这样做才能让我的应用程序按预期工作。

至于细节,我生成的对象是 Unity Sphere 3D 对象预制件,在 x、y 和 z 上的比例为 0.50,并附加了一个影响其颜色的材质属性。

如果有人对如何提高性能有任何想法,将不胜感激!

【问题讨论】:

  • 这些物体上是否也有碰撞器?
  • 您如何/为什么要生成这些对象? ——你需要它们同时生成吗?他们会同时出现在屏幕上吗?你需要它们存在多久?您目前使用什么方法?
  • 你需要优化游戏还是场景?
  • @Ruzihm 上面没有碰撞器。
  • @Pikanchion 它们需要同时生成并被查看(它们将同时出现在屏幕上。它们将留在世界中,直到用户退出。

标签: unity3d optimization


【解决方案1】:

根据您为场景所做的工作,我会研究的几件事可能会奏效。我建议的第一件事是遮挡剔除(如果适用的话)——基本上,只渲染在当前时间点可见的游戏对象。您仍然会在场景中拥有对 GameObject 的引用,但是这些引用只有在摄像机可见时才会真正被渲染。有很多方法可以做到这一点,如果您愿意,Unity 有一个内置的方法,但我已经看到了其他方法。

https://docs.unity3d.com/Manual/OcclusionCulling.html

如果他们都必须在视野范围内,那么可能有一些方法可以让事情变得更容易,因为我在工作时完全不知道这些,但也许你可以捏造需要的材料要渲染一下?意思是,每个球体是否都需要在其上渲染材质,或者你能逃脱 1/2 或 1/3 的球体有材质吗?我不确定你在你的场景中做了什么,但是实际的网格和纹理渲染器是否需要显示,或者你可以只产生一部分球体作为对撞机吗?

只是一些思考的食物,让我知道你的想法!我很乐意帮助头脑风暴。

【讨论】:

  • 评论不适合讨论。考虑在chat 讨论这个问题
【解决方案2】:

也许这些技巧可以解决问题:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2023-03-31
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多