• 中文
  • [ZH-CN]Spine-Unity 4.0 to 4.1升级指南

本文于2022-07-06译自官方的Spine-Unity 4.0 to 4.1 Upgrade Guide, 由作者@"Harald"#7956授权翻译, 本译本随官方文档更新.

This Guide was translated from Spine-Unity 4.0 to 4.1 Upgrade Guide, authorized by the writer @"Harald"#7956 at 2022-07-06.Update simultaneously with original post.


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

重新导出skeletons并更新spine-unity运行时文件
请查阅以下spine-unity文档章节:
spine-unity运行时文档:更新spine-unity运行时
spine-unity运行时文档:更新UPM包插件
它们描述了一些必要的步骤,比如该怎么重新导出你的Skeleton、如何跨多个spine-unity版本升级以及如何安稳地升级spine-unity运行时文件

调整代码以适应4.1版API的改动
API的主要改动参见Changelog中的C#Unity小节:
https://github.com/EsotericSoftware/spine-runtimes/blob/4.1/CHANGELOG.md#c-2

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

  1. SkeletonGraphic.unscaledTime属性现在改为protected了. 可以使用新属性UnscaledTime来替代.

  2. 移除了AttachmentRegionExtensions的方法Attachment.SetRegion, MeshAttachment.SetRegionRegionAttachment.SetRegion(region, update).
    应使用attachment.Region = region; if (update) attachment.UpdateRegion()替换之.

下表涵盖了对运行时内部设计的大改动, 用户通常不会访问这些部分. 这些东西在用户代码中多半从未使用过, 因此代码检查时可略过以下更改:

  1. 移除了IHasRendererObject接口. 可使用IHasTextureRegion代替.

  2. 移除了RegionAttachmentMeshAttachmentRendererObject属性. 可使用attachment.Region属性代替.

  3. Attachment.UpdateRegion替换了RegionAttachment.UpdateOffsetMeshAttachment.UpdateUVs.
    调用方必须确保附件区域不为null.

  4. AttachmentLoader.NewRegionAttachment()AttachmentLoader.NewMeshAttachment()现在接受一个额外参数Sequence.

  5. 已用 VertexAttachment.TimelineAttachment 替换了 VertexAttachment.DeformAttachment 属性.

  6. RegionAttachment.ComputeWorldVertices() 的首个参数现在是 Slot 而非以前的 Bone 了.

  7. 移除了 Skeleton.Update(float deltaTime) 方法. 请移除对该方法的全部调用, 其函数签名将失效.

  8. 移除了Slot.AttachmentTime属性. 请移除对该属性的全部访问.

  9. 移除了扩展方法AtlasRegion.GetSpineAtlasRect()的参数includeRotate(默认为true). 在用户代码中可能从未以includeRotate=false的方式使用过该方法参数.

  10. 相较于4.0, 在packing旋转角度等于90度时, 4.1版对调了AtlasRegion.PackedWidthAtlasRegion.PackedHeight.

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

  • 现在SkeletonGraphicOnRebuild回调委托的触发时机改为了: 初始化Skeleton之后但初始化AnimationState组件之前. 这样SkeletonGraphic的行为就能与SkeletonAnimationSkeletonMecanim组件的行为保持一致. 若希望在SkeletonGraphic AnimationState被初始化后立刻收到回调, 请使用新回调OnAnimationRebuild.

你可以在该中文页面下载最新的unitypackages: Spine Unity 下载页面

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

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

Related Discussions
...

再次感谢@wiige 的出色工作! 🙂
Thanks so much again @wiige for your great work! 🙂