【Unity】如何使用Spine动画

1.下载,选择自己需要的版本下载

下载链接:http://zh.esotericsoftware.com/spine-unity-download![请添加图片描述](https://file.jishuzhan.net/article/1761058573506318337/b9e6548612397cb1b32af617485a386b.webp)

2.下载完,导入Unity里

3.把美术文件拖入Unity里,会自动生成Spine数据

①_Atlas 文件是texture atlas文件 (.atlas.txt). 它包含对material和 .atlas.txt 文件的引用.

②_Material 包含了各个 texture atlas页 (.png). 它包含对着色器和 .png texture的引用.

③_SkeletonData 存储了skeleton数据 (.json, .skel.bytes). 它包含了对 .json 或 .skel.bytes 文件以及生成的 _Atlas 资产的引用. 它还为skeleton提供了自定义的导入和动画设置

4.Spine设置

  • Show Hierarchy Icons. 层次结构面板中带有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的 Default Mix Duration.
    ②Default SkeletonData Scale. 设置新导入的SkeletonDataAssets的默认 Scale 值.
    ③Default Shader. 设置新导入的skeleton atlas textures创建materials时使用的默认着色器.
    ④Apply Atlas Texture Settings. 对下方指定的texture导入器应用参考的 Atlas Texture Settings .
    ⑤Atlas Texture Settings. 在新导入的atlas textures 和 materials上应用选定的texture导入设置. 当从Spine导出atlas textures并启用 Premultiply alpha (默认为此)时, 你可以将其保持为 PMATexturePreset. 如果你已经禁用了 Premultiply alpha, 请将其设置为 StraightAlphaTexturePreset. 你也可以新建自己的 TextureImporter Preset 资产并分配于此处.
    ⑥Additive Material. 设置槽位blend模式为 Additive 的Material模板
    ⑦Multiply Material. 设置槽位blend模式为 Multiply 的Material模板
    ⑧Screen Material. 设置槽位blend模式为 Screen 的Material模板
  • Warnings
    ①Atlas Extension Warning. 每当发现一个 .atlas 文件时, 均在日志中给出警告和建议
    ②Texture Settings Warning. 每当检测到texture导入设置可能导致不佳效果(例如白边伪影)时, 均在日志中给出警告和建议.
    ③Component & Material Warning. 当组件和Material设置不兼容时, 输出警告和建议.
    ④SkeletonDataAsset no file Error. 当从 SkeletonDataAsset 查找 SkeletonData 时, 若没有正确赋值json或二进制文件对象则输出一个错误.
  • Editor Instantiation
    ①Default Slot Z-Spacing. 设置新实例化的 SkeletonRenderer 或 SkeletonGraphic组件的默认 Z Spacing 参数.
    ② Default Loop. 设置新实例化的SkeletonRenderer 或 SkeletonGraphic组件的默认的 Loop 参数.
  • Mecanim Bake Settings
    ①Include Folder Name in Event. 当启用该项时, Mecanim事件将调用名为 "FolderNameEventName" 的方法; 当禁用时则调用 "EventName" 的方法.
  • Handles and Gizmos
    ①Editor Bone Scale. 设置场景视图中显示的骨骼和gizmo元素的尺寸.
  • Prefabs
    ①Fix Prefab Overr. MeshFilter. 该项管理了同名skeleton组件检查器里 Advanced 面板参数的全局设置. 当组件参数被设置为 Use Global Settings 时将会使用这里的参数设置.
    ②Optimize Preview Meshes. 启用后将在预构建步骤中移除Spine prefab预览网格以减少构建的空间占用. 这将延长构建时间, 因为项目中的所有prefabs都将被处理.
  • Timeline Extension
    ①Default Mix Duration. 设置新创建的 Spine Animation State Clips的默认 Default Mix Duration 参数.
    ②Use Blend Duration. 设置新创建的 Spine Animation State Clips的默认 Use Blend Duration 参数.

5.创建一个空的GameObject,加入组件,Spine有三种实例化skeleton

  • SkeletonAnimation:使用Spine定制的动画和事件系统, 提供最高的可定制性. 渲染使用的是 MeshRenderer, 可以像Unity sprite一样与 SpriteMask 等遮罩进行交互. 在Unity中推荐以这种方式使用Spine skeleton.
  • SkeletonGraphic (UI) :UI上展示使用这个
  • SkeletonMecanim:使用Unity的Mecanim动画和事件系统来启动、mix和过渡动画. 与SkeletonAnimation相比,提供的动画mix和过渡选项较少.当使用 SkeletonMecanim 时, 无法保证动画过渡看起来和Spine Editor中的预览一致.

6.拖入skeleton数据

7.如果出现如图这种显示问题,别着急,只是美术给的动画默认值不是default

8.重新选择Skin,如果还是不显示,reload一下就可以了。

9.SkeletonAnimation组件参数

  • Initial Skin. 该皮肤将在动画开始时显示.注意:如果你看到的skeleton没有附加任何图像,可以切换到 default 以外的皮肤来显示皮肤.
  • Animation Name. 该动画将在开始时播放
  • Loop. 定义初始动画是循环播放还是只播放一次.
  • Time Scale. 设置时间比例来减慢或加快动画的播放速度.
  • Unscaled Time. 当置为true时, 更新将根据Time.unscaledDeltaTime时间而非Time.deltaTime进行. 这对于不适用慢动作效果的动画UI元素来说非常有用.

10.程序调用

  • 动作完成回调
csharp 复制代码
		Transform role = this.transform.Find("root/role");
		skelet = role.GetComponent<SkeletonAnimation>();
 
		Spine.AnimationState animationState = skelet.AnimationState;
		//动作完成后的回调
		animationState.Complete += OnSpineAnimationComplete
  • 更换皮肤
csharp 复制代码
bool success = skeletonAnimation.Skeleton.SetSkin("skinName");

skeletonAnimation.Skeleton.SetSlotsToSetupPose()
  • 设置动作
csharp 复制代码
//要设置一个动画,需要确定轨道索引(index)、动画名称和是否循环动画
TrackEntry entry = skeletonAnimation.AnimationState.SetAnimation(trackIndex, "walk", true);
  • 动画队列
csharp 复制代码
//要排队动画, 需要提供轨道索引、动画名称、是否循环播放该动画, 以及该动画在轨道上开始播放的延迟时间(以秒计).
TrackEntry entry = skeletonAnimation.AnimationState.AddAnimation(trackIndex, "run", true, 2);
  • 播放速度
csharp 复制代码
skeletonAnimation.timeScale = 1.2f;
相关推荐
_oP_i1 小时前
Unity Addressables 系统处理 WebGL 打包本地资源的一种高效方式
unity·游戏引擎·webgl
代码盗圣5 小时前
GODOT 4 不用scons编译cpp扩展的方法
游戏引擎·godot
Leoysq10 小时前
【UGUI】实现点击注册按钮跳转游戏场景
游戏·unity·游戏引擎·ugui
PandaQue12 小时前
《潜行者2切尔诺贝利之心》游戏引擎介绍
游戏引擎
_oP_i13 小时前
unity中 骨骼、纹理和材质关系
unity·游戏引擎·材质
Padid1 天前
Unity SRP学习笔记(二)
笔记·学习·unity·游戏引擎·图形渲染·着色器
Tp_jh1 天前
推荐一款非常好用的C/C++在线编译器
linux·c语言·c++·ide·单片机·unity·云原生
dangoxiba1 天前
[Unity Demo]从零开始制作空洞骑士Hollow Knight第十八集补充:制作空洞骑士独有的EventSystem和InputModule
游戏·unity·c#·游戏引擎·playmaker
无敌最俊朗@1 天前
unity3d————屏幕坐标,GUI坐标,世界坐标的基础注意点
开发语言·学习·unity·c#·游戏引擎
异次元的归来2 天前
UE5相机系统初探(一)
ue5·游戏引擎·camera