【问题标题】:What is the best way to represent a large field of objects while using minimal resources? [closed]在使用最少资源的情况下表示大量对象的最佳方式是什么? [关闭]
【发布时间】:2016-02-12 05:12:22
【问题描述】:

我正在寻找一个统一的项目,它是为 android 开发的!我想知道我是否可以弄清楚一些事情。我的问题涉及我试图创造一个由恒星组成的宇宙,确切地说是 150,000 颗单独的恒星,因为在任何时候都只能看到一定的百分比。什么是最有效的结构,可以让用户相信真实的环境,同时将开销降至最低,因为它将在手机上?

我想用什么类型的物体来表示恒星的质量与需要更精细细节的近距离恒星的质量?

在规划这个项目时我应该考虑什么样的线程结构?

在这种情况下,项目从 unity 移植到 android 有多容易?

非常感谢任何帮助,因为我希望通过团结更好地发展,干杯

【问题讨论】:

  • 这个问题太笼统了。你有大约 6 个问题 - 尝试缩小范围。

标签: c# unity3d


【解决方案1】:

我建议不要跟踪所有 150,000 颗星,而只跟踪可见的星。当视野发生变化时,使用随机数生成器来定义刚刚进入视野的星星,并从内存中删除离开的星星。为了保持一致性,如果用户可以快速切换方向,您可能希望在当前视野周围短时间保留星星。

至于线程,这与其说是你跟踪的星星数量的函数,不如说是你对它们所做的事情——你没有提到的事情。

【讨论】:

    【解决方案2】:

    1)这个问题主要是游戏开发问题,而不是统一问题。我只是为您指明方向,因为完整的答案太多了。通常,如果您需要知道您在具有无限对象或接近(接近 150k)的 3D 场景中的位置,您将使用八叉树进行定位。像地图一样构造,树的每个节点都指向一个方向(西,南,北,东,NNW,......)然后你的每颗星星都有一个节点,你可以计算你在哪里以及你做了多少想看。更多信息可以在谷歌上找到。 (相当复杂的话题jfyi)

    2) 致力于 1) 的混合实体/组件设计。在您清楚 1) 之后,您就会明白我的意思。

    3) 绝对多线程异步。 1 线程更新,1 线程绘制,少数工作线程(位置,...)

    4) Unity Engine 的移植版实际上运行良好。当然,你应该有一个 android 外设来测试和调试,但大多数时候,它会为你工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多