• Edited

本文于2024-04-19译自官方的Spine-Unity 4.1 to 4.2 Upgrade Guide, 由原文作者 @Harald 授权翻译, 本译本随官方文档更新.

This Guide was translated from Spine-Unity 4.1 to 4.2 Upgrade Guide, authorized by guide writer @Harald at 2024-04-19.Update simultaneously with original post.


Spine 4.2现已新鲜出炉, 因此本文将在此提供一份4.2版运行时的官方升级指南.

重导出Skeleton和升级 spine-unity 运行时文件
请查阅 spine-unity 文档的以下章节:
spine-unity 运行时文档: 更新spine-unity运行时
spine-unity 运行时文档: 更新UPM插件包
这些内容描述了重导出Skelton、spine-unity 跨版本升级以及安全升级 spine-unity 运行时文件等操作的必要步骤.

调整代码以适应4.2中的API更改
API相关的详细变更, 请参见 Changelog 中 C#Unity 的相关部分
https://github.com/EsotericSoftware/spine-runtimes/blob/4.2/CHANGELOG.md#c-2

一些方法在4.2版中已被更名或被替换.
如果你在代码中因为使用已更名或已移除的方法而收到编译错误, 执行以下检查步骤将有助于快速修复代码兼容性问题:

  1. TrackEntry.MixAttachmentThreshold 替换 TrackEntry.AttachmentThreshold.

  2. TrackEntry.MixDrawOrderThreshold 替换 TrackEntry.DrawOrderThreshold .

  3. Skeleton.UpdateWorldTransform(Skeleton.Physics.Update) 替换 Skeleton.UpdateWorldTransform(). 请注意: 如果你很确定在同一帧内就会调用Skeleton.UpdateWorldTransform(Skeleton.Physics.Update), 你可把入参Skeleton.Physics.Update换成Skeleton.Physics.Pose传入.

  4. SkeletonGraphicRenderTexture.quadRawImage 替换为SkeletonGraphicRenderTexture.quadMaskableGraphic, 并将数据类型从RawImage改为MaskableGraphic.

从4.1升级至4.2的运行时行为更改
关于行为变更的完整列表, 仍请参见 Changelog 中 C#Unity 的相关部分
https://github.com/EsotericSoftware/spine-runtimes/blob/4.2/CHANGELOG.md#c-2

  • MeshGenerator 添加了一个新的优化选项, 避免在默认情况下槽位alpha为0时将附件渲染为完全透明. 注释掉 MeshGenerator.cs 中的 #define SLOT_ALPHA_DISABLES_ATTACHMENT 即可恢复旧版运行时行为. 只有在自定义着色器中将顶点色 alpha 用于透明度以外的目的时, 才需要禁用此选项.

  • SkeletonGraphic Materials: 由于为 CanvasGroupCompatible 参数添加了新的material集, SkeletonGraphic material均已默认禁用了 CanvasGroup Compatible选项. 如果你希望在SkeletonGraphic中启用 CanvasGroup Compatible, 从 CanvasGroupCompatible 的material子目录中分配对应material即可. 请注意, 现在可以使用新的 Detect SettingsDetect Material 按钮来自动分配适当material.

现可在中文下载页中下载最新的unitypackages: spine-unity 下载页面

如果你发现有什么解释得含混不清的地方, 或者指南中存在内容错漏, 请毫不犹豫地在此跟帖来痛陈高见, 这样我们才能让大家的升级之旅尽可能的更无脑&更无痛.

希望诸位喜欢新版本的Spine, 并用它创造出更多令人惊叹的游戏佳作! 🙂

Related Discussions
...
Misaki stickied the discussion .
12 days later

2024-05-01, API变更列表更新 from @Harald :

在示例组件SkeletonGraphicRenderTexture中刚刚引入了一个额外变更来解决这个问题.

当访问由SkeletonGraphicRenderTexture创建的RawImage时, 请执行以下步骤使您的代码兼容更改:

  • SkeletonGraphicRenderTexture.quadRawImage 替换为SkeletonGraphicRenderTexture.quadMaskableGraphic, 并将数据类型从RawImage改为MaskableGraphic.

我们已更新了上述指南, 此变更被置于API变更列表.

3 months later

Do I need to re export all spine files after upgrading spine-unity from 4.0 to 4.2?
请问spine-unity从4.0升级到4.2需要后,spine文件需要全部重新导出吗?