【问题标题】:Unity 2D - Animation drops FPS dramaticallyUnity 2D - 动画大幅降低 FPS
【发布时间】:2020-11-08 23:33:52
【问题描述】:

我使用 2d 动画包和 2D Ik 包创建了 2D 精灵动画。我的角色是一张精灵表(PBS 文件)。在 PBS 文件中,所有的恶意(眼睛、嘴巴等 - 角色基本上是一个有脸的正方形)都被排列好并附有骨头。然后我在 Unity 中为角色的空闲动画制作了动画。

动画复杂,一共1028帧(约17秒)。

否则场景几乎是空的。对于简单的平台,有一些带有碰撞器和刚体的精灵。有一个 1024 像素的背景图像。 x 1024 像素。

在播放模式下,FPS 下降到大约 30 FPS(及以下)。

我有另一个没有动画但有大量资产的场景(对于一个 2D 场景,有数百个精灵,其中许多精灵一直在运动)。此场景始终以 210++ FPS 运行。

为什么这个动画会杀死 FPS?我刚刚开始为所有角色创建动画。如果我给场景中的 NPC(敌人)添加类似的动画,那么这个东西可能根本不起作用。

欢迎提出任何建议。

【问题讨论】:

  • 打开 Unity Profiler,看看在游戏过程中什么会占用更多 CPU 时间。
  • profiler显示动画占用CPU资源最多,第二位是vsync
  • 你能给我们看一张照片吗?
  • 为分析器添加了图片链接。顺便说一句,我一直在考虑购买 Spine。那会提供更好的性能吗?也许将 Spine 关键帧导出为精灵表或精灵图集?
  • 对我来说似乎是脚本造成的。我不知道蓝色是否会干扰。

标签: unity3d animation frame-rate


【解决方案1】:

对于遇到同样问题的任何人,请确保您已安装 Burst 和 Collections 包(通过包管理器),它极大地提高了 2D 动画的性能。

【讨论】:

  • Burst 确实在这个特定问题上改进了很多,我的 FPS 从 40 提升到了 100,但是,您提到的“集合”在哪里?在包管理器中找不到它
  • 您应该可以通过包管理器找到它 - 只是不要忘记启用“高级”按钮下的“显示预览包”选项,因为包仍在预览中。
  • tks @tiekto,我确实启用了预览,但仍然找不到集合或数学,我使用的是 2020 版本
  • 啊,我现在确实使用 2019.4,但是,我记得有一个特定的 2020 版本,其中包管理器在加载某些包时遇到问题。因此,如果还不是这样,我建议更新到最新的流版本。如果这没有帮助,最好的解决方案是通过编辑器提交错误,支持团队非常快速且非常有帮助。另外 - 检查您是否还没有将这些包作为现有包的依赖项。
  • 对于那些使用unity 2020或更高版本并且想知道Collection包在哪里的人,只需安装Jobs包,Collection is include in Jobs
【解决方案2】:

所以我这周花了几天时间创建精灵表动画来替换我在 Unity 中制作的骨骼动画。正如我所怀疑的那样,性能领先于光年。我现在有更多动画,其中一些长达 270 帧。然而,我始终看到超过 220 FPS。可惜unity的2D动画包这么慢。为了完成我一直在寻找的动画,我最终在 Blender 2.8 中使用 Andreas Esau 的 COA 工具(剪切动画工具)插件对我的角色进行了绑定和动画处理。

COA 工具是一个很棒的工具,但我希望它可以将渲染的精灵表导出到 Unity。我最终将每一帧导出为单独的图像,并使用 TexturePacker 制作我需要的 2048px 方形精灵表。一旦我将精灵表统一起来,我就能够快速设置动画剪辑并对其进行测试。

正如我所说,精灵表比直接在 Unity 中创建的动画要好得多。

如果您费心阅读我原帖中的所有 cmets,我会说有很多脚本正在运行,并且发生了很多计算。它肯定存在于分析器中。但这绝对不是导致 FPS 下降的罪魁祸首。这绝对是动画。

【讨论】:

  • 您确定自己正确使用了骨架动画吗?用于动画制作的三角形网格有多好?这是性能的一个重要因素。另外请记住,逐帧导出您现在已经以大量内存需求为代价交换了游戏性能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 2019-01-13
相关资源
最近更新 更多