• RuntimesUnity
  • Unity Spine初始化卡顿

游戏使用了Spine来制作帧动画, 每件装备有300-500张图, 每件装备都是单独的spine资源, 会是这个原因导致的卡顿吗? 我该如何去优化?

  • Misaki ответили на это сообщение.
    Related Discussions
    ...

    是的,使用大量的Spine资源和图像可能会导致初始化时的卡顿。以下是一些优化建议:

    1. 减少顶点和骨骼数量:使用修剪功能来减少顶点变换的数量。尽量减少骨骼和顶点的数量,以降低CPU的负担。

    2. 合并资源:如果可能,将多个Spine资源合并为一个资源,以减少加载和渲染的开销。

    3. 使用二进制格式:将Spine骨架资源导出为二进制格式,而不是JSON格式,以减少加载时间和内存分配。

    4. 跳帧更新:使用固定时间步长更新(FixedTimestepUpdates)来减少每帧的更新次数。例如,可以在每N帧更新一次骨架动画。

    5. 减少裁剪多边形:尽量减少裁剪多边形的数量,因为裁剪操作非常耗费CPU资源。可以通过隐藏图像或使用更少的裁剪顶点来优化。

    6. 批处理渲染:确保在Unity中启用了批处理渲染,以减少Draw Call的数量。可以参考防止排序错误的文档。

    7. 优化网格生成:在生成网格时,尽量减少每帧的计算量。可以参考优化大尺寸Spine动画的建议,将网格生成的结果缓存起来,避免每帧重新计算。

    通过以上方法,可以显著减少初始化时的卡顿,提高游戏的性能。

    Init A sequence animation with 300-500 frames is definitely a lot. As shown in the flame example on the Spine Tips page, we recommend that you consider reducing the number of frames by combining it with a deformation animation using bones: https://esotericsoftware.com/spine-tips#59-flame-frame-bones

    • Init ответили на это сообщение.
      • Изменено

      Misaki 一个动作有八个方向, 有很多动作(攻击1, 攻击2, 攻击3, 攻击4,攻击5,攻击6 ... 攻击10, 移动1-5, 受击, 站立坐下等等), 每个装备也拥有对应的动作. 如果全部更改会消耗大量的时间, 这是现在不能接受的.... 我会在之后的项目中考虑这个方式, 但是现在有没有一个比较快速的优化方法?

      • Misaki ответили на это сообщение.

        Init Aside from what Spinebot answered, if you have multiple texture atlas pages for each skeleton, I recommend combining them into one.
        Also, please refer to the “性能问题” section in the FAQ of the spine-unity runtime documentation:
        https://zh.esotericsoftware.com/spine-unity#%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98

        • Init ответили на это сообщение.

          Misaki 好的, 谢谢!