本文于2022-03-23译自官方的Spine-Unity 3.6 to 3.7 Upgrade Guide, 由作者@"Harald"#7956授权翻译, 本译本随官方文档更新.
This Guide was translated from Spine-Unity 3.6 to 3.7 Upgrade Guide, authorized by the writer @"Harald"#7956 at 2022-03-23.Update simultaneously with original post.
从Spine-Unity 3.6升级至3.7的建议步骤:
- 关闭所有打开的场景并创建一个新的空白场景, 且不选中任何对象. 这是为了确保没有活动的Spine对象.
- 记下对Spine-Unity运行时所做的全部自定义修改. 把这些修改做个备份.
- 删除你的旧"Spine"文件夹.
- 导入最新的Spine-Unity 3.7 unitypackage.
- 可选操作: 关闭项目和Unity, 然后再次打开.
- 如果在代码中使用了SkeletonAnimator, 要把它改为"SkeletonMecanim". 参见下文的详细改动.
从Spine 3.6导出的Json skeleton 数据可以在3.7版的运行时中读取.
二进制skeleton数据需要用Spine 3.7重新导出.
变更须知:
- SkeletonMecanim
SkeletonAnimator
已被重命名为SkeletonMecanim
这是为了使其更易读,并在使用它时最大限度地提高代码不全的效率.
现有的prefabs和场景可保持原样. 但代码需用"SkeletonMecanim"替换"SkeletonAnimator".
注意这不是SkeletonAnimation.
SkeletonAnimation仍是SkeletonAnimation, 它保持不变.
只是SkeletonAnimator被重命名为SkeletonMecanim.
它们是不同的组件.
- 着色器
Spine-Unity的基本着色器现在可以通过在Material检查器中勾选"Straight Alpha Texture "复选框来实现straight-alpha纹理. 这将把着色器编译为一个副本着色器(关键字 _STRAIGHT_ALPHA_INPUT
).
Spine/SkeletonGraphic (Premultiply Alpha)
被重命名为Spine/SkeletonGraphic
Spine/SkeletonGraphic Tint Black (Premultiply Alpha)
重命名为Spine/SkeletonGraphic Tint Black
移除了旧版的straight alpha专用着色器.
运行时和编辑器, 以及程序集(Assembly)定义
如果你想利用新的文件夹编排来组织程序集定义文件, 你可以删除旧的Spine-Unity运行时文件夹并导入最新的unitypackage.
请确保你如常地备份了项目, 以防在升级过程中丢失更改或引发问题.
SpineAtlasAsset
AtlasAsset
已被重新命名为SpineAtlasAsset
. 这阐明了atlas来源于Spine/libGDX atlas而非其他库. 即将推出的可选做法是使用Unity的SpriteAtlas进行打包, 并允许其他atlas来源.
组件, prefabs和资产上的现有字段保持不变.
Skeleton.FlipX/FlipY现在为Skeleton.ScaleX/ScaleY
Skeleton类现在用ScaleX和ScaleY取代了FlipX和FlipY.
旧版行为的等价写法总结如下:
// To get the value
bool flipX = skeleton.ScaleX < 0;
// To set the value.
skeleton.ScaleX = flipX ? -1f : 1f;
FlipX/FlipY属性在beta版中被标记为过时属性, 但在正式发布时将被移除.
SetPosition现在为SetLocalPosition
Bone.SetPosition
扩展方法被重命名为Bone.SetLocalPosition
以提高辨析度.
SkeletonDataModifiers与BlendModeMaterials资产
SkeletonDataAssets现在是一个可扩展的资产系统, 用于在加载SkeletonData后对其进行额外处理. 它被称为SkeletonDataModifier资产.
其中之一是BlendModeMaterials资产. 该类资产为具有特殊blend模式的槽位中的附件使用替代Materials, 原理是它能使用存储在资产中的模板Material生成所需的Material.
它生成Screen和Multiply(还可选Additive) blend模式槽位所需的material, 然后将生成的material分配给有特殊blend模式槽位中定义的附件.
相较于3.6, BlendModeMaterials资产是一个性能更强的解决方案, 而与旧的SlotBlendModes组件相比, 它能更好地应付multi-texture情况. SlotBlendModes在需要进行实例级material定制时仍然有用, 并且不会从运行时中移除. 然而在一般的大多数情况下, BlendModeMaterials就完全足够了.
这个新模块搭配了一个默认的"Default BlendModeMaterials"资产, 以及开箱即用的Materials. 要使用它, 只需将这个 "Default BlendModeMaterials"资产在检查器中添加到SkeletonDataAsset的新"Skeleton Data Modifiers"列表中即可.
如果想要进阶配置, 可以复制默认资产的副本或新创建一个资产, 然后设置你自定义的materials和着色器作为模板.
若有多个blend模式相同的槽位, 且使用了多个在同一个atlas中的附件, 它们将分配相同的生成Material.
和以前一样, 多种blend模式会导致skeleton网格的渲染使用多种materials. 而Unity中的多matrial的MeshRenderers会造成更多的绘制调用和相关行为.
// 以后将添加更多内容...
现在可以从下载页下载beta版的unitypackage: Spine Unity下载页
更多改进信息, 请参见: spine-runtimes/CHANGELOG.md at 3.7-beta