spine在unity中的应用

龚韬 龚韬     2023-04-11     368

关键词:

Spine是什么?

1.Spine的英文意思是脊柱,脊椎。

2.Spine是专注于游戏的2D动画软件。可以创建骨骼动画,并将其整合到游戏当中,提供了一套高效的工作流程。

3.代码通过API可以直接访问骨骼、附件、皮肤以及动画等数据。使用API可以在游戏中操作骨骼、组合动画、创造淡入淡出等效果。轻松实现代码和动画之间的组合。

Spine动画编辑器

基本概念:

1、骨架Skeleton:数据的集合,包含构成此骨架的所有骨骼、插槽、附件及其他信息。

2、骨骼bones:一个人物本身由多个关节的骨骼组成。除了根骨骼以外,每个骨骼都有对应的父骨骼,骨骼与骨骼之间的关系最终构造成类似树的结构

3、插槽slot:一个骨骼bone下可能有多个slot插槽,每个slot插槽下可以放置一个附件实例。插槽可以灵活的控制渲染顺序,分组同类附件。

4、附件attachment:slot插槽内当前渲染的附件实例,即真实上屏渲染的实物素材。(可能需要对素材做旋转、偏移、缩放甚至网格化mesh处理)。

5、皮肤skin:skin可以看做是attachment的集合,或者可以认为是attachment的一个映射查询表,一个人物可以由多套skin,通过切换skin的方式去查询不同的附件映射表,便可以变相的实现人物的全身换装。

 Spine和帧动画的比较

帧动画 原理:帧动画是一组“相关联”图片,在很短的时间内,播放切换,让大脑认为是连续的;

优点: 实现简单播放性能高,播放性能高;

缺点: 资源占用过大

Spine动画 原理:将一个模型,根据动画的需求分成一些骨骼,一个骨骼对应一张贴图,将这些 骨骼通过工具,在不同的时间点来调整骨骼的位置、缩放、透明度等信息, 将这些时间点连续的播放形成动画;

优点:资源占用少;

缺点: 播放的性能比帧动画差;

 

Spine的导出

注释:

1.JSON文件/二进制文件:存储骨架信息。

2.素材图片:类似Sprite图,也可单一素材,可导出一张或多张。

3.与素材图片对应的atlas文件:记录素材图片在Sprite图上的位置信息特征等。一个atlas文件可对应多个素材图片。

由设计人员(美术)提供对应的spine编辑器所导出的动画素材,开发人员选用对应的spine运行库对素材进行消费和上屏渲渲染,便是spine所做的事,相比gif、css帧动画、apng具备更加强大的灵活性。 

 

导出后的资源放入Unity中 

Spine导出的资源     

Unity生成后的资源

1.skeleton_Atlas:图集

2.skeleton_Material:材质

3.skeleton_SkeletonData:骨架数据

在Unity中查看Spine骨架信息

 

 

使用Spine创建预制体

1.新建一个棋子预制体并加入一个名字为spine的Gameobject。

2.点击查看spine属性,添加SkeletonGraphic.cs 代码挂载。

3.并在SkeletonData Asset中选择刚才导入到项目中的Spine。 点击Starting Animation的下拉菜单可以看到当前Spine动画所带的动画 以上便创建了一个可以使用Spine的预制体。可以在Unity中使用了。

 SkeletonGraphic Graphic;   //定义Spine类型

Graphic = Spine.gameObject.GetComponent<SkeletonGraphic>(); //找到Spine骨架

var spAnim = Graphic.Skeleton.Data.FindAnimation("Idle");
 if (null != spAnim)
 
               Graphic.AnimationState.SetAnimation(0, "Idle", true);//播放Spine动画。
 

常见问题

1.如果上一个Spine没有播放完成,就立刻播放了下一个动画,就会出现跳帧的情况。    

解决方案:

a.播放动画时通过获取动画时间等待上个动画播放完毕后再播放另外一个动画。

b.游戏中其实可以通过代码实现了一个类似状态机的东西,要求每次播放动画时必须等要当前     动画Spine处于Idle状态,其他的动画第一帧和最后一帧保持和Idle一致这样就不会出现跳帧的情况。

2.如果游戏中每秒60帧,但是Spine动画制作的时候是每秒30帧,这样在游戏中播放Spine的时候动画不够会自动给中间插入帧导致一些问题。

解决方案:

a.尽量在制作Spine时的帧率和游戏中的帧率保持一致。

spine在unity中的应用

Spine是什么?1.Spine的英文意思是脊柱,脊椎。2.Spine是专注于游戏的2D动画软件。可以创建骨骼动画,并将其整合到游戏当中,提供了一套高效的工作流程。3.代码通过API可以直接访问骨骼、附件、皮肤以及动画等... 查看详情

spine应用--使用spine动画制作动作游戏

在前面的文章中,已经陆陆续续的讲解了一些使用Spine动画的细节,有了这些细节,我们已经满足了在unity中使用Spine动画制作动作游戏的技术基础。那么,要使用Spine动画在unity中制作一款动作游戏,究竟还有哪些是需要注意的... 查看详情

spine在unity中实现闪白效果

...其实是两个效果:1.变白的效果要实现这个效果需要修改spine的shader模式。spine导入unity中时默认采用的shader是“Spine/Skeleton”需要将这个模式该为“Spine/SkeletonFill”.在这个shader中有一个参数Fill Phase通过代码动态修改这个参数... 查看详情

unity之spine骨骼动画使用

导入spine插件需要使用龙骨动画的话,首先我们得去spine官网下载Unity插件包:spine官网打开Unity工程双击下载好的spineunity插件包或者你也可以在Unity菜单中依次点击:Ass 查看详情

spine合批问题

1)Spine合批问题2)使用HDR模式渲染RenderTexture产生的问题3)Inspector的图片预览窗口异常4)关于Unity2019打包疑问 RenderingQ:这里用Unity导入了一个Spine文件,该Spine有两张贴图,在Unity中也生成了两个对应的材质。现在有个问题... 查看详情

有没有大佬知道spine怎么在unity里换装的基本流啊,要被开了

参考技术A打开你的unity安装目录下的Editor\StandardPackages.把你的unitypackage扔进去,再打开Unity,右击project,选择Inputpackage就能找到你的,点击就可导入。 查看详情

unity2d里spine骨骼动画怎么和序列帧特效绑定一起?

我用的spine骨骼动画,在unity里怎么把动作和特效绑定在一起(特效是序列帧的),还是说就直接在spine里把特效和人物动作绑定好,unity版本5.6参考技术A加元主要集中在平面设计,更专业的施工图纸,电气图纸方面。3D侧的立体... 查看详情

unity之spine骨骼动画使用(代码片段)

导入spine插件需要使用龙骨动画的话,首先我们得去spine官网下载Unity插件包:spine官网打开Unity工程双击下载好的spineunity插件包或者你也可以在Unity菜单中依次点击:Assets->ImprotPackage->CustomPackage,导入下载好的... 查看详情

unity中使用spine

参考技术A1、Spine版本:3.72、若以json导出,把.png、.json、.atlas.txt拖入Unity会自动创建_Material、_Atlas、_SkeletonData三个文件。3、若以skel二进制形式导出,把上述三个文件拖入Unity,只会自动创建_Material、_Atlas,需手动创建_SkeletonData... 查看详情

unity游戏开发入门-spine(代码片段)

...过来写一下,本文章针对代码(示例Lua)控制Spine(一种2D美术资源),这里主要针对SkeletonAnimation形式,说明方式使用代码注释记录。代码每块全博客衔接1.spine当前播放的动画名称--获取SkeletonAnimation... 查看详情

unityspine的应用

 1、下载把必要的脚本文件拷到工程随意的文件下面 2、从spine程序导出动画,将会得到三个文件,由于unity不认atlas文件,在后面加.txt后缀,把文件拉到unity工程里面。 3、到上面几个文件处右键create-material,把png图片... 查看详情

动态修改spine动画渲染层次(代码片段)

...有一个MeshRenderer的组件。我们通过他来改变SkeletonAnimation中的OrderinLayer的值。---------------------voidStart()m_Mr=GetComponent<MeshRenderer>();m_Mr.sortingOrder=10;作者:crazyapp来源:CSDN原文:https://blog.csdn.net/CrazyApp/article/details/79098023版权声明... 查看详情

spine学习一-渲染组件

...:SkeletonAnimation:有点儿类似于unity的Animation,挂上一个spine资源,就可以跑了 SkeletonRenderer:SkeletonAnimation的父类,渲染出Spine的图像的组件 SkeletonGraphic:这个不大清楚 SkeletonAnimator:类似于Unity的Animator  查看详情

spine学习五-spine动画融合(代码片段)

...新版动画系统已经能够很方便的进行动画融合,那么使用spine的动画状态机的情况下,如何来进行动画融合呢?官方有两种方案,一种是使用混合动作实现,另一种是使用spine的动画状态机实现,这里讲解一下状态机的实现:1publ... 查看详情

spine学习六-碰撞检测

相信在使用Spine做游戏的时候,肯定会遇到这样的需求:一个人物有一把大刀,要使用这把大刀去砍怪,伤害检测以这把大刀砍刀怪物为准,那么要怎么在一个看上去就是一体的SpineObject上绑定一个碰撞盒子,而且这个碰撞盒子... 查看详情

求教unity使用animator控制spine动画

卡拉部分收集有瑕疵的spine动画教程sj百度网盘免费资源在线学习   链接:https://pan.baidu.com/s/1oEgF4BettT8fvoRjp_bWsg提取码:stec  卡拉部分收集有瑕疵的spine动画教程sj可换装练习的官方切片9、技能动作与特效讲解.mp48... 查看详情

unity在wpf中的应用

1.本文的实现类继承于IRepository1usingSystem;2usingSystem.Linq;3usingSystem.Linq.Expressions;4usingZhang.Test.ELUnityUtility;56namespaceZhang.Test.IDataLayer7{8[UnityInjection("First",Name="GenericRepository",C 查看详情

深度优先及广度优先在unity中的应用(代码片段)

...全部物体的层级关系进行简单的遍历。。。算法数据结构中的树的遍历在Unity中最直观的表现就是对某物体的全部子物体的遍历关系。数据结构以下所示就是对Unity全部子物体层级的转换出的数据结构(树)3d 深度优先遍历:... 查看详情