【Unity】如何使用Spine动画
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;
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)