导入骨架数据

April 18th, 2023

在某些情况下你没有 Spine 项目,但又想使用导出的文件导入一个骨架到 Spine 中。本教程将指导你完成这整个过程。


解包纹理图集页面

如果你有尚未打包到纹理图集中的单个图片文件,则可以跳过此步骤。如果你的图片已打包到纹理图集中,你需要先解包才能在 Spine 编辑器中使用它们。这可通过 Spine UI 或命令行完成。最好使用最新版的 Spine 来解包图集。

如果图集是用预乘Alpha打包的,Spine 在解包时需要取消预乘 alpha。对于使用较新版本 Spine 打包的图集,图集文件知道图集图片是否有预乘 alpha。解包器将使用图集文件中的此信息(如有)。

对于使用旧版 Spine 打包的图集,你需要分辨 Spine 图集图片是否已预乘。当图片已预乘时,图片的透明部分会显得暗些。如下是预乘和非预乘(直接 alpha)图片的比较:


使用 UI 解包

通过 Spine UI 解包:

  1. 确保图集文件和图集图片在同一文件夹中。
  2. 打开 Spine 编辑器并从主菜单中选择“Texture Unpacker(纹理解包器)”。
  1. 在“Texture Unpacker(纹理解包器)”窗口中:
    • 输入“Atlas(图集)”文件的路径。如果已为 spine-unity 导出骨架数据,则文件扩展名可能是.atlas.txt,这会正常工作。
    • 输入“Output folder(输出文件夹)”,这是你将存储解包图片的文件夹路径。
    • 如果图集使用预乘 alpha 打包,请勾选“Unpremultiply alpha(取消预乘 alpha)”。如果图集文件有“pma:true”,则将使用它来代替此复选框。

  1. 点击“Unpack(解包)”。将为图集中的每个纹理区域创建单独的图片文件。

使用 CLI 解包

要通过命令行界面 (CLI)解包,请指定以下参数:

Spine --input <Path to folder of atlas images> --output <Path to write unpacked image files> --unpack <Path to texture atlas file>

你还可以使用此短命令行参数执行相同的操作:

Spine -i <Path to folder of atlas images> -o <Path to write unpacked image files> -c <Path to texture atlas file>

你可能想要使用 --update-u,这可运行特定的版本。例如,在上面的示例中添加-u 4.1.20将运行 Spine 4.1.20 来解包。使用最新的非测试版 Spine 解包是最好的,你可以使用-u latest来这样做。


导入骨架数据

要导入你的骨架数据,首先确保你使用的 Spine 版本与用于导出数据的版本相同。这对于二进制数据尤其重要,但也适用于 JSON 数据。

接下来,检查图集文件是否有指定图集比例的行。导入时将需要此信息。如果未找到,则意味着骨架的图集是以 1 的比例(原始图片大小)打包的,或者图集是用旧版本的 Spine 打包的。

要导入骨架数据:

  1. 打开主菜单并选择“Import Data(导入数据)”。
  1. 在“Import Data(导入数据)”窗口中:
    • 对于“File(文件)”,输入 JSON 或二进制文件的路径以导入。
    • 如果纹理图集已缩放,请设置“Scale(比例)”值,以便骨架大小与解包图集图片一致。
    • 输入要导入的骨架名称。
    • 输入要导入的骨架名称。

  1. 按“Import(导入)”,你将看到你的骨架,但带有MISSING图片而不是正确图片。发生这种情况是因为尚未设置图片路径,我们将在下一步中修复。先保存 Spine 项目。
  1. 在“Tree (层级树)”视图中选择“Images(图片)”节点,并在“Path(路径)”中输入图片文件夹的路径。

现在骨架图片会正确显示:


疑难解答

为何正确设置了图片路径却没有显示我的图片?

如果骨架是在 Spine Professional 中创建的,但你使用 Spine Essential 导入了骨架数据,则不会导入网格附件约束,因为它们仅在 Spine Professional 中可用。请使用 Spine Professional 导入包含 Spine Professional 功能的骨架。

为何我的图片的透明区域周围有黑色边框?

你的图集图片具有预乘 alpha,但你在解包图集时没有勾选“Unpremultiply alpha(取消预乘 alpha)”。请勾选Unpremultiply alpha(取消预乘 alpha)”再次尝试解包

为何我的附件图片的透明区域周围有白色边框?

你的图集图片没有预乘 alpha,但你在解包图集时勾选了“Unpremultiply alpha(取消预乘 alpha)”。请不勾选Unpremultiply alpha(取消预乘 alpha)”再次尝试解包

为何有些部分比正确尺寸小或大?

你的图集使用大于或小于 1 的比例打包。请再次导入骨架指定用于打包图集的相同比例值。如果你不知道比例,可以尝试一些常用值,例如 0.5 或 0.25。

为何导入的骨架动画不正确?

要正确导入,你必须使用与导出数据相同的 Spine 版本。你可以在导出的数据中找到 Spine 版本,方法是使用文本编辑器打开它并在文件开头附近查看:

如果文件是以二进制格式导出的,你可能需要使用 十六进制编辑器 查看版本号。

如果你的数据来自旧版本的 Spine,请运行该版本以便你可以导入数据,然后保存一个 Spine 项目文件并使用你要用的较新版本的 Spine 打开它。

为何骨骼图标变成了默认图标?

骨骼图标信息不包含在导出的骨骼数据中,因为它只在 Spine 中需要,所以导入的骨架将为所有骨骼使用默认图标。

为何骨骼颜色会重置并且网格顶点之间的边缘消失了?

在未勾选“Nonessential data(非必要数据)”的情况下导出骨架数据时,不会导出一些运行时通常不需要的信息。导入的骨架仍然可以工作,但是会丢失非必要信息。所以如果你以后打算导入数据,请务必在导出时勾选“Nonessential data(非必要数据)”。


如果你在从导出的文件导入骨架时遇到问题,我们很乐意在 Spine 论坛上提供帮助!