【Unity】如何使用Spine动画

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

下载链接:http://zh.esotericsoftware.com/spine-unity-download请添加图片描述

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.程序调用

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

skeletonAnimation.Skeleton.SetSlotsToSetupPose()
  • 设置动作
//要设置一个动画,需要确定轨道索引(index)、动画名称和是否循环动画
TrackEntry entry = skeletonAnimation.AnimationState.SetAnimation(trackIndex, "walk", true);
  • 动画队列
//要排队动画, 需要提供轨道索引、动画名称、是否循环播放该动画, 以及该动画在轨道上开始播放的延迟时间(以秒计).
TrackEntry entry = skeletonAnimation.AnimationState.AddAnimation(trackIndex, "run", true, 2);
  • 播放速度
skeletonAnimation.timeScale = 1.2f;

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>