【问题标题】:Unity. Which is faster: one big script with switch(ObjectType) or lot of simple scripts?统一。哪个更快:一个带有 switch(ObjectType) 的大脚本还是许多简单的脚本?
【发布时间】:2016-06-15 00:26:33
【问题描述】:

Unity3d。移动的。 赛跑者游戏。有一些类型的对象,如汽车、BG、场景、食物、障碍物、powerUps 等等。和动作,可以由不同的对象使用或不使用。 从一开始 - 我正在做很多不同的脚本,如“sizeChanger”或“Sprite flipper”,几乎所有人都使用不同的2D colliders,其中一些正在跟踪Player position.x

问题的情况是,活动中的某些操作正在重复操作,例如跟踪 Player position.x

所以我制作了一个灵活的脚本,其中有 public enum ObjectType,其中在 Awake、Start、Update、OnTriggerEnter2D、OnTriggerExit2D 中有 switch(ObjectType) ...因此在我的场景中有很多 @ 987654327@ 与 same 脚本与不同的ObjectType 语句。

这是否会更慢或性能差异不值得担心? (作为一个小问题,我没有备份可以在带有大量脚本的旧版本上测试 FPS。)

【问题讨论】:

  • 在我看来,通常较小的脚本更适合我,因为长脚本意味着更难检查。但这只是 IMO。
  • 我不明白您要做什么,但是将所有内容放在一个脚本中,复制粘贴和根据您的 ObjectType 在行为之间切换是个坏主意。
  • 您为什么不测试并找出答案?您没有旧版本不是借口,我们也没有。因此,如果您真的想知道,请测试这两种情况。
  • 嗨 Dmitriy ...没有区别。 (或者只有很小的差异。)
  • 建议您“勾选”您自己的答案(可以这样做)以帮助保持板子整洁,谢谢

标签: c# performance optimization unity3d


【解决方案1】:

所以,我在开始场景中添加了 1200 个对象并且在开始时(右 Profiler)有单独的小脚本在工作,在第二次开始时(左 Prifiler)正在工作大脚本......

结果:

  • 一些简单的脚本 - 23.03 毫秒(独立)延迟
  • 大型脚本 - 23.6 毫秒(独立)延迟

结果:

  • 一些简单的脚本 - 63ms(android) 延迟
  • 大型脚本 - 67ms (android) 延迟

1200 个对象时的差异为 4 毫秒。

对于我的游戏,正如我所见 - 性能差异不是担心的原因,因为在我的游戏场景中最多有 50 个对象。

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 2021-07-07
    • 2012-10-18
    • 1970-01-01
    • 2016-11-18
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多