Licensing
将 Spine 官方运行时整合到自建应用程序中需要持有 Spine 许可证.
资产
导出Unity可用的Spine资产
资产导出用户指南
你可以在 Spine用户指南中找到完整说明以便
基本Spine Unity导出流程
以下步骤展示了一种为Unity导出Spine资产的最简方法.
-
在Spine中做完了skeleton和动画后, , 单击
Spine Menu
>Export...
(CTRL
+E
). 这时会打开 Export window.
-
选择导出窗口左上方的
JSON
选项.
请注意: 实际生产实践中建议使用二进制格式的 skeleton而非JSON格式, 因为它文件尺寸更小而且加载更快.
-
勾选
Texture Atlas
的Pack
复选框. (也推荐新手同时勾上Nonessential data
,Pretty print
). 确保不要启用Animation cleanup
, 否则将不会导出pose对应的关键帧(keys).
- 单击
Pack
复选框下面的Pack Settings
. 这会打开 Texture Packer Settings 窗口. - 左下角的
Atlas extension
文本框内应设置为.atlas.txt
. - 这样texture打包器的设置就完成了. 可以点击
OK
关闭该窗口.
- 单击
-
在 Export window 中选择输出文件夹的位置. (推荐新建一个空文件夹来保存导出文件.)
-
单击
Export
. -
这时会输出以下三个文件:
skeleton-name.json
或skeleton-name.skel.bytes
, 其中包含了skeleton和动画数据.skeleton-name.atlas.txt
, 保存的是texture atlas的信息.- 单个或数个
.png
文件, texture atlas中的一页就对应着这样一个文件, 而texture atlas则包含了skeleton所需的全部图片.
请注意: 如果你是使用 2D Toolkit 的用户, 那么第3步 (即打包
.png
和.atlas.txt
) 对你来说是毫无必要的. 你只需在SkeletonDataAsset的字段中填写tk2dSpriteCollectionData
的正确引用即可. 关于如何启用2D Toolkit, 请参考本指南的 安装运行时 一章.
导出用于Unity的二进制格式
以二进制格式而不是JSON格式导出资产, 会使文件体积更小, 加载也更.
以下步骤展示了改为导出二进制spine-unity资产的方法.
- 在导出窗口的左上角选择
Binary
而非JSON
. - 将
Extension
置为.skel.bytes
.
请注意: spine-unity无法加载扩展名为
.skel
的文件. 务必使用扩展名.skel.bytes
.
进阶操作 - 自动化导出
如果你有大量项目需要重导出资产, 建议使用 Spine 命令行界面(CLI)来自动化skeleton和atlas资产的导出操作. 这可免去繁重易错的手动导出流程, 并且若决定升级到新的 Spine 版本, 也能轻松地一次性重导出所有项目资产.
这里是一个使用CLI导出的示例.
举例来说, 可以使用这个脚本来导出所有的 Spine 示例项目并创建texture atlases: export.sh
进阶操作 - 单页Texture Atlas导出与SkeletonGraphic
一般来说, 建议尽可能使用single-texture (即单页texture) atlas以减少由额外子网格(submeshes)导致的绘制调用(draw call)次数. 对于 SkeletonGraphic来说尤其如此. 由于Unity CanvasRenderer
组件本身的限制, SkeletonGraphic 在默认情况下只能使用单页texture. 此时你可以在 SkeletonGraphic
的组件检查器中启用 Advanced - Multiple CanvasRenderers
, 这样便能给每个子网格生成一个带 CanvasRenderer
的子 GameObject
来支持多张texture. 不过出于性能方面的考虑, 最好尽可能地避免这样做. 因此这意味着在UI中使用的Skeletons应被打包成一个single-texture (单页) atlas, 而非多页atlas.
如果这些textures塞不进一个单页atlas, 也可以 按文件夹来分组打包texture atlas页. 这样就能确保每个皮肤只用一个atlas页.
当图片正确分组在各个文件夹中后, 可以通过以下步骤导出skeleton:
- 按
Ctrl+E
或在下拉菜单中选择Export...
- 启用
Texture Atlas
Pack
并选择Image Folder
, 不要选右侧的Attachments
. - (可选步骤) 确保
Pack Settings
的Options
右下没有启用Flatten Paths
和Combine Subdirectories
(默认为该值). - 点击导出按钮.
进阶操作 - Premultiplied和Straight Alpha导出
Spine的Texture Packer有两种导出texture atlas的基本工作流:
- Premultiplied alpha (默认为该选项, 在Gamma色彩空间中进行premultiplied)
- Straight alpha
Premultiplied alpha工作流相较于straight alpha有一些优势, 主要的两个优势是: additive-blended附件不会产生额外的绘制调用(draw call)以及使得mip-map生成效果更佳.
导出和导入设置的互相匹配至关重要, 请务必关注 进阶操作 - Premultiplied 和 Straight Alpha 导入 一节, 详细了解Unity中正确的导入设置.
在Unity中导入Spine资产
- 在Unity编辑器中打开一个已集成了spine-unity运行时的Unity项目, 步骤可见 运行时安装 一章所述内容.
- 打开存放导出文件(
.json
,.atlas.txt
和.png
)的文件夹. - 将导出的文件(或包含它们的文件夹)复制到项目中的
Assets
文件夹下. 从Windows资源管理器/ Mac Finder将导出的文件拖到Unity的项目面板中的某个文件夹下也可以..
spine-unity运行时在检测到文件添加后会自动生成Unity所需的资产文件.
自动生成具体会产生以下资产:
- 一个代表texture atlas文件 (
.atlas.txt
)的 _Atlas 资产文件. 它包含对material(材质)和.atlas.txt
文件的引用. - 一个代表各 texture atlas页 (
.png
) 的 _Material 资产文件. 它包含对着色器和.png
texture的引用. - 一个存储了skeleton数据 (
.json
,.skel.bytes
) 的 _SkeletonData 资产文件. 它包含了对.json
或.skel.bytes
文件的引用以及对自动生成的 _Atlas 资产的引用. 它还可以自定义的skeleton导入和设置skeleton动画, 具体内容详见 Skeleton Data 资产 一节.
进阶操作 - Premultiplied和Straight Alpha导入
如前文 进阶操作 - Premultiplied和Straight Alpha导出 一节中所述, Spine提供了两种atlas texture导出的基本工作流:
- Premultiplied alpha (默认为该选项, 在Gamma色彩空间中进行premultiplied)
- Straight alpha
使用首选项中的 Atlas Texture Settings
修正导入设置
Preferences parameter Atlas Texture Settings
for correct import settings
重要提示: 非常重要的一点是, 只要在atlas texture导出时启用了 Premultiply alpha
, 则要禁用Unity中Material的 Straight Alpha Texture
参数和Texture的 Alpha Is Transparency
设置, 反之亦然. 因此spine-unity运行时在Unity的 Preferences
窗口中加了个 Spine
首选项 页面, 可以从Preferences
下的 Edit - Preferences
(Mac上是 Unity - Preferences
)找到这个选项页. 它里面有一个 Atlas Texture Settings 设置, 可以给新导入的Atlas textures自动应用恰当的texture和material导入设置. 在这里你可以找到 Additive Material
, Multiply Material
和 Screen Material
的material预设模板. 当你切换到Straight Alpha工作流时, 也应相应地调整这些material预设引用.
当从Spine导出启用了 Premultiply alpha
(默认启用)的atlas textures时, 应把 Atlas Texture Settings
置为 PMATexturePreset
, 并将 blend 模式 materials 置为 SkeletonPMAAdditive
, SkeletonPMAMultiply
或 SkeletonPMAScreen
. 若在导出中禁用了 Premultiply alpha
, 则应将 Atlas Texture Settings
置为 StraightAlphaTexturePreset
且blend 模式 materials 应选择 SkeletonStraightAdditive
, SkeletonStraightMultiply
或 SkeletonStraightScreen
. 你也可以创建自定义的 TextureImporter
Preset
资产和blend模式material模板预设, 并设置在此处. 当你使用这些自定义的预设的时候, 建议在其名字中加上 PMA
或 Straight
字样以便于分辨这些预设用了何种blend模式.
如果你看到透明区域周围有深色的边框, 或者图片附件边缘有彩色条带, 这很可能就是因为导入设置有误.
正确的Texture打包器导出和Texture & Material导入设置
正确的 Texture Packer 导出以及 Texture 和 Material 的导入设置如下:
- Premultiplied Alpha Texture Packer 中启用
Premultiply alpha
,
Unity Texture 设置中禁用sRGB (Color Texture)
和Alpha Is Transparency
,
Unity Material 参数中禁用Straight Alpha Texture
.
请注意: 虽然本文档以前建议启用
sRGB (Color Texture)
, 但当同时启用Generate Mip Maps
后这样的设置参数可能会导致附件之间出现白缝(seams). 考虑到如上设置在Gamma空间中工作正常且可以避免这类问题, 因此从现在开始, 我们建议在使用PMA texture时禁用sRGB (Color Texture)
.
- Straight Alpha Texture Packer 中禁用
Premultiply alpha
, 同时启用Bleed
,
Unity Texture 设置启用sRGB (Color Texture)
和Alpha Is Transparency
,
Unity Material 参数中启用Straight Alpha Texture
.
Texture 打包器(Texture Packer)的默认设置就是启用 Premultiply alpha
. 运行时中的所有Spine着色器也都默认使用 Premultiply alpha
工作流, 它们均默认禁用了 Straight Alpha Texture
参数.
然而在某些情况下你仍旧需要使用straight alpha工作流. 比如:
- 当你使用了 线性色彩空间, 那么就 必须使用straight alpha.
Spine导出时的预乘操作(premultiplication)是在Gamma色彩空间中执行的, 因此在导入时转换为线性色彩空间时将导致色彩超限. 当在material上检测到这组设置时, 控制台会对此输出一条警告. - 你在使用非Spine着色器.
普通的着色器默认接收的是straight alpha texture, 若不使用straight alpha导出, 就会错误地导致图像附件周围产生黑色边框.
在切换到straight alpha工作流后, 请确保对所有textures和materials均按上文所述进行配置. 你可以通过 Project Settings - Player - Other Settings - Color Space
来检查或更改当前的颜色空间.
导入的故障排除步骤
你将Skeleton导入Unity时如果遇到错误, 那么其原因可能五花八门异彩纷呈, 从Spine导出设置有误到Unity中设置不对都有可能. 因此可参考以下视频, 它将帮助你解决导入过程中出现的常见问题, 并展示应如何正确设置导入导出参数.
进阶操作 - 将Unity SpriteAtlas作为Atlas Provider
请注意: 我们推荐你采用标准的Spine工作流, 并使用Spine的sprite atlases而非Unity的
Sprite Atlas
资产. Spine atlases提供了更好的打包能力, 支持多页atlas且健壮性更高. 因此只有当你实在无法使用正常Spine工作流时, 再考虑将UnitySprite Atlas
资产作为atlas provider. 真到这时候你还有个路子: 在运行时将一组皮肤中用过的texture区域重打包为单页atlas texture.
使用Unity的 SpriteAtlas
作为atlas provider, 它能替代使用 .atlas.txt
和 .png
文件的skeleton数据文件. 需要使用 Spine SpriteAtlas Import
工具窗口进行资产导入, 该工具位置在 Window - Spine - SpriteAtlas Import
.
准备 Sprite Atlas
的步骤如下:
- 使用
Assets - Create - Sprite Atlas
菜单创建Sprite Atlas
. - 在
Sprite Atlas
检查器中添加Sprites文件夹, 这些Sprites将作为Objects for Packing
的附件. - (a) 在Unity 2018.2 之前的版本中, 请手动禁用
Tight Packing
并启用Read/Write Enabled
.
(b) 在Unity 2018.2 及后续版本中, Unity会自动设置这些参数. - 在新的
Spine SpriteAtlas Import
窗口中将Sprite Atlas
资产分配到Sprite Atlas
属性上. Unity会自动生成其所需的资产. - 点击
Load regions by entering Play mode
进入Play模式然后退出该模式, 这样便可加载区域信息. 这时Sprite Atlas
就可以当成Spine atlas使用了.
在 .json
或 .skel.bytes
skeleton 资产上使用Sprite Atlas的步骤是:
- 将新建的atlas资产和
.json
或.skel.bytes
放在同一目录下. - 在
Spine SpriteAtlas Import
窗口中将atlas资产分配给Skeleton json/skel file
属性. - 点击
Import Skeleton
生成使用Sprite Atlas
资产的_SkeletonData
文件.
Spine首选项
spine-unity运行时在Unity的 Preferences
窗口中添加了一个 Spine
页面, 通过 Edit - Preferences
即可找到(在Mac上是 Unity - Preferences
). 你可以在里面设置导入和实例化skeleton时使用的默认设置, 还能自定义spine-unity运行时的界面外观和更新行为.
- Show Hierarchy Icons. 启用该选项会在层次结构(hierarchy)面板中, 给附加了Spine组件的
GameObjects
显示相关图标. - Auto-reload scene components. 启用该选项会在场景中skeleton组件的SkeletonDataAsset发生变更时, 自动地重新加载这些组件. 当你的场景中有大量的 SkeletonRenderer 或 SkeletonGraphic 组件时, 自动加载操作可能会变得很慢.
- Reload SkeletonData after Play. 当启用该选项时, 运行时将在退出Play模式后(从.json或.skel.bytes文件中)重新加载活动场景中所有Skeleton共享的SkeletonData. 这可能会延长项目的加载时长, 但可以防止在Play模式下修改了的共享SkeletonData影响到下次游玩.
- Auto-Import Settings
- Default Mix. 设置新导入的SkeletonDataAssets的 默认 Mix 时长.
- Default SkeletonData Scale. 该值表示新导入的SkeletonDataAssets的默认
Scale
值. - Default Shader. 设置新导入的skeleton atlas textures创建materials时使用的默认着色器.
- Apply Atlas Texture Settings. 将
Atlas Texture Settings
应用于texture导入器. - Atlas Texture Settings. 将选定的texture导入设置应用于新导入的atlas textures和materials上. 当从Spine导出启用了
Premultiply alpha
(此为默认值)的atlas textures时, 你可将其置为PMATexturePreset
. 如若你禁用了Premultiply alpha
, 请将此选项设置为StraightAlphaTexturePreset
. 你也可以新建自定义的TextureImporter
Preset
资产并分配到此处. - Additive Material. 设置
Additive
blend模式槽位的Material模板. 详见SkeletonData
Blend 模式 Materials. - Multiply Material. 设置
Multiply
blend模式槽位的Material模板. 详见SkeletonData
Blend 模式 Materials. - Screen Material. 设置
Screen
blend模式槽位的Material模板. 详见SkeletonData
Blend 模式 Materials.
- Warnings
- Atlas Extension Warning. 每发现一个
.atlas
文件便在日志中输出一条警告和建议. - Texture Settings Warning. 每当检测到texture导入设置会导致错误效果(例如白边伪影)时, 便在日志中输出一条警告和建议.
- Component & Material Warning. 当组件不兼容Material设置时, 在日志中输出一条警告和建议.
- SkeletonDataAsset no file Error. 当从
SkeletonDataAsset
中查找SkeletonData
时, 若发现没有为其分配json或二进制文件则输出一个错误.
- Atlas Extension Warning. 每发现一个
- Editor Instantiation
- Default Slot Z-Spacing. 设置实例化 SkeletonRenderer 或 SkeletonGraphic组件时默认的 Z Spacing 参数.
- Default Loop. 设置实例化 SkeletonRenderer 或 SkeletonGraphic组件时的默认
Loop
参数. - Physics Inheritance
- Default Position. 设置实例化 SkeletonRenderer 或 SkeletonGraphic组件时默认的 Physics Inheritance - 位置 缩放因子.
- Default Rotation. 设置实例化 SkeletonRenderer 或 SkeletonGraphic组件时默认的 Physics Inheritance - 旋转 缩放因子.
- Mecanim Bake Settings
- Include Folder Name in Event. 当启用该项时, Mecanim事件将调用以
"FolderNameEventName"
方式命名的方法; 反之则调用以"EventName"
方式命名的方法.
- Include Folder Name in Event. 当启用该项时, Mecanim事件将调用以
- Handles and Gizmos
- Editor Bone Scale. 设置场景视图中骨骼和gizmo元素的显示尺寸.
- Prefabs
- Fix Prefab Overr. MeshFilter. 该项保存了同名skeleton组件在Unity检查器 Advanced 面板中参数的全局设置. 当组件参数被置为
Use Global Settings
时将会使用此处的参数设置. - Optimize Preview Meshes. 启用该项后将在预构建步骤中去除Spine prefab预览网格, 以此降低构建尺寸. 但这将延长构建时间, 因为该操作会优化项目中的全部prefabs.
- Fix Prefab Overr. MeshFilter. 该项保存了同名skeleton组件在Unity检查器 Advanced 面板中参数的全局设置. 当组件参数被置为
- Timeline Extension - 以下选项设置的是 Timeline 扩展 UPM包 行为
- Default Mix Duration. 设置创建
Spine Animation State Clips
时默认的Default Mix Duration
参数. - Use Blend Duration. 设置创建
Spine Animation State Clips
时默认的Use Blend Duration
参数.
- Default Mix Duration. 设置创建
更新Spine资产
在实际开发过程中, 你可能经常需要更新Spine skeleton数据和texture atlas文件. 直接覆盖这些文件其实就能更新这些文件 (.json
, .skel.bytes
, .atlas.txt
, .png
). 只需从Spine编辑器中重新导出资产, 并将新导出的文件复制到项目中 Assets
文件夹的子文件夹中覆盖现有文件即可.
Unity会检测这些文件的变化, 并自动重新导入修改后的资产. 自动重新导入会保持对Spine资产引用的完整性同时使用最新数据.
请注意: Unity有时无法识别文件更改. 这时在Unity的项目面板中找到包含你想重导入的Spine资产所在的文件夹, 右击该文件夹然后从菜单中选择
Reimport
即可.
Skeleton Data资产
Skeleton data资产 (名字后缀为 _SkeletonData
) 存储了skeleton的层次结构、槽位、绘制顺序、动画和其他构成skeleton的数据信息. spine-unity运行的其他组件也将会引用并共享skeleton data资产, 以显示skeleton并播放其动画.
在Unity的项目面板中选中它便可检查或修改这个skeleton data资产. 检查器面板将显示该skeleton数据的所有属性以供查看和修改.
Skeleton Data
SkeletonData设置块包含了skeleton的通用导入设置.
-
Scale. 设置自定义导入缩放值, 它会影响所有引用了该数据资产的skeleton实例. 改变该值将立即同步到这个skeleton的所有实例上.
请注意: 当你想实现精确匹配 - 比如将图像中的32px映射为1个游戏单位时 (假设在Spine中没有缩放附件图像), 可以把这个
Scale
参数置为1/px_per_unit
. 所以对于32px/unit
的这个例子来说, 将Scale
置为1/32 = 0.03125
即可. -
SkeletonData Modifiers. 在对
.json
或.skel.bytes
文件的加载完成后, 你可以对skeleton data资产进行额外处理. 详情请参考下文中的 SkeletonData 修改器资产 一节. -
Blend Modes - Upgrade. 将过时的
BlendModeMaterialAsset
升级为原生的Blend模式Materials属性. -
Blend Mode Materials. 带有特殊blend模式的Skeleton槽位会用到额外的materials. 运行时在导入时会自动设置这些materials, 除非你使用了旧版Unity和旧版spine-unity中的
BlendModeMaterialAsset
. 如果你还在使用这种资产, 建议点击上文提到的Blend Modes - Upgrade
按钮升级这个BlendModeMaterialAsset
, 这样可以防止在新版的Unity中出现问题. 你可以在 Spine 首选项 中自定义每种blend模式的material模板.- Apply Additive Material. 启用该项后, 运行时对
Additive
blend模式的槽位也会生成material. 当使用 Straight alpha 工作流时应启用这个参数. 而使用 PMA 工作流时则无需启用, 因为Normal
和Additive
槽位均可使用PMA material绘制. - Additive Materials, Multiply Materials, Screen Materials. 这些列表显示每个blend模式当前使用的blend模式materials.
- Apply Additive Material. 启用该项后, 运行时对
Atlas
skeleton使用Atlas引用来解析图片导出名称, 通过该名称便能定位用以渲染的图像区域.
在导入时, 每个Atlas资产(文件名以 _Atlas 结尾的资产)均会被作为一个元素自动地填入 Atlas Assets
资产数组中.
若spine-unity没有自动填入所需的全部atlas资产, 你可将 Atlas Assets
Size
改为对应的atlas资产数量, 并按 Element0
- ElementN
手动将所需的atlas资产填进来.
Mix设置
Skeleton data资产中可以设置 动画mix时长.
Default Mix Duration
设置动画的默认mix时长, 单位为秒.
点击资产的 Custom Mix Durations
中的 Add Custom Mix
按钮可以在某两个动画间新建一个mix, 并设置特定的mix时长, 这样做将会覆盖上文中的默认mix时长值.
使用skeleton data资产的组件(如skeleton动画组件)在播放动画时会用到这些mix时长设置.
预览页面
在Skeleton Data资产的预览页面中可以检查资产中包含的所有骨骼(bone)、槽位、动画、皮肤和事件.
点击每个动画左边的播放按钮可以回放动画, 而在 Slots
中启用 Show Attachments
便能查看对应槽位的实时更新. 所有时间轴事件以紫色标记显示. 在播放预览时将鼠标悬停在标记上, 就能显示事件名称.
点击 Create Animation Reference Assets
按钮即可为skeleton的所有动画生成引用资产. AnimationReferenceAsset
和一个引用了 Spine.Animation
的Unity资产行为完全一致, 也可以将它用在Unity检查器的组件属性中.
Skeleton Mecanim
如果你想使用Unity的Mecanim动画系统而非Spine的默认动画系统, 你可以点击 Generate Mecanim Controller
按钮生成一个Mecanim控制器.
Skeleton烘培
请注意: 烘焙是一个专用工具, 在spine-unity中 不推荐通过这种方式 来使用Skeletons! 它不适用于 SkeletonMecanim, SkeletonAnimation 和 SkeletonGraphic (UI) 组件! 它将把一个Skeleton烘焙成一个不太灵活的, 带有
MeshRenderers
且Transforms
结构固化的Prefab和一堆动画片段. Spine的大量功能在Unity的动画系统中并不存在, 因此这些功能在烘焙后便会失效.
点击 SkeletonDataAsset
检查器右上方的齿轮图标选择 Skeleton Baking
就能打开 Skeleton Baking Window
.
在 SkeletonBaker.cs中可以找到功能支持性的详细列表.
请注意: 烘焙没有使用最近新增的Unity 2D动画系统, 而是采用了Unity原生的
MeshRenderer
3D动画系统.
Texture Atlas资产
Texture atlas资产包含了skeleton的图像引用数据, 即一张图片存储在texture atlas的哪个页上, 以及它在texture atlas页上的具体UV texture坐标.
双击 Materials
数组中的material资产来便能查看texture atlas页的material.
请注意: 你可以修改texture atlas资产所引用的material和texture. 但在修改texture时, 务必确保UV texture坐标正确.
SkeletonRenderer
组件使用通用的MeshRenderer
组件渲染, 所以它也会像附加在cube或quad上一样应用material和texture. 因此你大可按需在Texture Atlas资产上替换或预处理material中的texture.
Set Mipmap Bias to -0.5
按钮是为进阶用户准备的, 对atlas texture启用 Generate Mip Maps
时该选项可以修正Mip-Maps模糊的问题.
点击 Apply Regions as Texture Sprite Slices
按钮会为atlas中每张图像生成sprites. 生成的sprites引用了texture atlas图像( png
文件)区域, 并可作为Unity sprite资产使用.
SkeletonData Modifier资产
在从 .json
或 .skel.bytes
文件加载skeleton后, SkeletonData修改器(Modifier)可以进一步处理skeleton data资产.
SkeletonDataAsset的检查器提供了一个 Skeleton Data Modifiers
列表, 可以在此添加修改器资产.
编写自定义SkeletonDataModifierAsset类
想要在从 .json
或 .skel.bytes
文件加载skeleton数据后进一步地处理skeleton数据, 你可以编写自定义 SkeletonDataModifierAsset
类. SkeletonDataModifierAsset
是一个 ScriptableObject
的抽象类, 你应该从该类中派生你的自定义类.
-
创建一个继承自
SkeletonDataModifierAsset
的新类, 并实现void Apply (SkeletonData skeletonData)
方法. 如需在Asset -> Create
菜单中列出该类, 需要为你的类添加CreateAssetMenu
类自定义属性.C#[[CreateAssetMenu(menuName = "TopMenu/Submenu/SubSubmenu", order = 200)]
public class BlendModeMaterialsAsset : SkeletonDataModifierAsset {
public override void Apply (SkeletonData skeletonData) {
...
}
} -
在项目面板中选择目标文件夹, 并在
Asset -> Create
菜单中点击上文中新创建的菜单项, 便能创建新类的实例资产. 找到 SkeletonData 资产的Skeleton Data Modifiers
列表, 将刚创建的修改器资产拖进该列表中即可.
在从 .json
或 .skel.bytes
文件加载完数据后便会调用 Apply(skeletonData)
.
BlendModeMaterialsAsset Modifier资产 (已废弃)
请注意: spine-unity在
SkeletonDataAsset
上支持了 原生的槽位blend模式 (即Additive
、Multiply
和Screen
), 且在导入新skeleton资产时将自动置为SkeletonDataAsset
. 现已全面使用原生属性SkeletonDataAsset
替代了过时的BlendModeMaterialsAsset
, 后者已被废弃. 同时在SkeletonDataAsset
检查器面板里新加入了一个Blend Modes - Upgrade
按钮, 用以将BlendModeMaterialsAsset
升级为原生的Blend模式属性. 该升级操作将在Unity 2020.1及后续版本的资产导入和重导入过程中自动执行, 以避免在这些Unity版本中出现BlendModeMaterialAsset
错误. spine-unity 4.0及后续版本亦将自动执行这一升级, 且升级行为无视Unity版本.
BlendModeMaterialsAsset
是spine-unity中内置的一种SkeletonData修改器资产类. 它存储了对materials的引用, 这些materials用于渲染blend模式槽位中的附件, 而blend模式槽位指在 Spine 编辑器中被置为 Additive
, Multiply
和 Screen
blend模式的槽位.
存储在BlendModeMaterials资产中的Material引用是生成新Materials时的模板, 这些新Materials正好包含了附件中所需的texture.
spine-unity 运行时内置了一个名为 Default BlendModeMaterials
的现成 BlendModeMaterialsAsset
. 使用这个内资资产可以使具有特殊blend模式槽位中的附件用上运行时默认的 Multiply
和 Screen
着色器:Spine/Blend Modes/Skeleton PMA Multiply
和 Spine/Blend Modes/Skeleton PMA Screen
.
如果需要使用其他类型的Materials/着色器, 或者设置不同的Materials, 可以用 Create -> Spine -> SkeletonData Modifiers -> Blend Mode Materials
菜单创建新的 BlendModeMaterialsAsset
. 然后将自定义Material模板分配到这个新建的资产上.