运行时架构

Spine运行时是可集成到应用程序中的一种软件组件, 用于加载和渲染从Spine导出的Skeleton(骨架)数据. 运行时十分灵活, 可自定义纹理加载的时机和方式、操纵骨骼(bone)、程序化动画, 还能对不同动画进行mix和分层(layering)等等操作.

运行时汇总页列出了适用于各种编程语言及游戏工具的运行时.

许可

使用Spine运行时需要获得许可证, 如果你已经拥有了Spine许可证, 则可在不限量的应用程序中使用Spine运行时. 详情见 Spine许可证 页面.

源代码

Spine运行时完整源代码托管在GitHub上. 这套源代码是使用运行时的应用程序所必需的基础组件, 能让你可根据需求来定制或优化运行时.

可使用Git来克隆源码或在GitHub上点击绿色的"Clone or download"按钮, 再选择"下载ZIP"来下载源码.

本文档中的代码示例使用的是伪代码, 可轻松转换成任何语言跑在运行时上. 查看GitHub上的具体运行时页面(README.md文件)来访问具体运行时文档。

版本控制

Spine运行时可加载从Spine导出的数据. 须注意使用正确的Spine版本才能使Spine运行时成功加载数据. 建议冻结你的编辑器版本以便保持其与运行时版本一致. 我们在持续改进Spine及Spine运行时, 你可以定期更新你的运行时及编辑器版本。

运行时的主分支兼容最新的非beta版本Spine. 每个运行时的 README.md 文件将列出其兼容的具体版本.

原则上beta版本可能不兼容全部运行时, 但是某些运行时可能会率先可用. 如果你需要最新的运行时功能, 请使用带有beta名称的分支, 例如4.2-beta. 如果你感兴趣的运行时发布了beta更新, 那么beta分支中的代码便是最新代码. 请注意beta分支仍处于开发状态且尚未完工.

类图

此图显示了运行时的各组件是如何在一起组合协作的. 点击可查看原图.

各对象类型的属性及方法均置于 API参考文档 中.

数据对象

笼统地说, Skeleton数据会被加载到"Setup Pose Data"对象中, 并通常与texture atlas(纹理图集)合起来使用. 然后运行时会用这些数据对象创建Skeleton的"实例数据(Instance Data)"对象, 这些有状态对象与屏幕上显示的各Skeleton一一对应. 与实例对象不同, 数据对象是无状态的, 可在任意数量的Skeleton实例间共用.

有对应实例数据的数据对象, 其类名以"Data"结尾, 而没有对应实例数据的数据对象则无此后缀, 例如附件、皮肤和动画.

在多个Skelton实例中共用数据对象是高效实践, 因为数据只需加载一次. 但是如果修改了数据对象,这次修改会影响所有skeleton实例. 如果要只修改某一个实例的数据对象, 则必须复制这个数据对象然后仅将该实例的数据对象替换掉.

实例对象

实例对象有与其对应的数据对象类名相同, 只是没有"Data"后缀. 例如, SkeletonData是数据对象, 而Skeleton是实例对象.

实例对象与数据对象有许多属性都是相同的. 数据对象中的属性来自setup pose(初始姿势), 通常不会变动. 实例对象中的这些属性则表示播放动画时该实例的当前姿势.

每个实例对象都保存着对其数据对象的引用, 用于将实例对象重置回setup pose. 此外, 某些属性仅存在于数据对象中, 而不在实例对象中, 例如, 对象名称.

下一节: 加载骨架数据