Unity 2D - 动画显着降低 FPS

问题描述 投票:0回答:4

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

动画比较复杂,总共1028帧(约17秒)。

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

在播放模式下,FPS 下降至 30 FPS 左右(或更低)。

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

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

如有任何建议,我们将不胜感激。

enter image description here

unity-game-engine animation frame-rate
4个回答
5
投票

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


1
投票

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

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

正如我所说,精灵表远远优于直接在 Unity 中创建的动画。

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


1
投票

查看分析器屏幕截图,SpriteSkin.LateUpdate() 占用了大部分帧时间。为了减少 CPU 在变形上花费的时间,您可以限制每个 Sprite 部分使用的顶点数量 - 您可以在蒙皮编辑器中使用“编辑几何”工具进行调整。基本上,顶点数量越少,性能越好

此外,请确保每个 Sprite Skin 组件都启用了 Enable Batching 选项。这将使 Burst 和 Collections 包能够加快计算速度。有关更多详细信息,请查看this 2D 动画文档。

最近,Unity 发布了一本免费电子书,详细介绍了最佳实践以及如何为 2D 动画准备艺术。您可以在这里找到它。


0
投票

@Marunia 这太有用了,很抱歉花了一年多的时间才有人表达赞赏。谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.