千家信息网

unity中spine怎么用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关unity中spine怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。骨骼动画首先我们来看到底什么是骨骼动画:在早期的机器上,渲染本
千家信息网最后更新 2026年11月03日unity中spine怎么用

这篇文章将为大家详细讲解有关unity中spine怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

骨骼动画

首先我们来看到底什么是骨骼动画:

在早期的机器上,渲染本身已经占用了很多CPU资源,因此,对于渲染,往往采取的是一种空间换时间的策略,以避免在模型的渲染中继续加重CPU的负担。帧动画模型在这种条件下应运而生。比较著名的帧动画格式是Quake2所采用的MD2。到今天为止,帧动画依然存在,只不过帧动画更多地是来描述小且动作相对少些的物体。

GPU出现后,CPU的问题早已不像以前那么突出,一些新的手段和技术也可以被应用进来了。骨骼动画相对于帧动画而言,更加灵活多变,但同时,骨骼动画需要更多的计算量,因此骨骼动画往往应用在需要着重体现动作细节的模型中。

骨骼动画技术后于帧动画技术出现。最开始,骨骼动画仅用于非实时渲染的建模领域,如3DMax这类建模软件之中,以方便美工的建模。后来,CPU从渲染中解放后,骨骼动画才用于实时渲染的游戏中。

骨骼动画原理

骨骼动画的想法来源于人体骨骼。例如说,人的上肢所有肌肉和皮肤都受上肢骨胳的影响,而人的踝关节则分别承受小腿骨胳和脚骨的影响。根据这个我们可以将骨骼动画理解为两个概念: 骨骼:用以控制蒙皮的一种抽象的概念,如人体骨骼控制皮肤。 蒙皮:被骨骼控制、并显示在外的因素,如人体的皮肤被骨骼所影响。

蒙皮(SKINMESH)

在最终的渲染结果中,蒙皮将完全显示出来,蒙皮实际上就是顶点、法线和纹理坐标等将被渲染的元素。而其中,最关键的当然是顶点,顶点将直接被骨头牵扯运动,因而使得整个模型呈现骨骼所决定的样子。

骨骼(SKELETON)

骨骼是一种抽象的概念,在最终的渲染结果中,它不可见。类如人体骨骼、骨骼是若干骨头(Bone)成树状的集合体,而每块骨头又分别与若干数量的蒙皮顶点关联。当骨头运动的时候,与之关联的所有蒙皮顶点也会受骨骼的影响而运动。

骨头与蒙皮顶点的关联需要考虑到每块骨头对蒙皮顶点的影响。 尽管大部分情况下,一个顶点将仅仅被一个骨头的影响,但是关节处的顶点往往被多根骨头影响,例如踝关节,可能会分别受小腿骨50%和脚骨50%的影响,这种影响叫作权重(Weight)。
在这种情况下,我们称踝关节的这些顶点,受小腿骨影响的权重是50%,受脚骨影响的权重也是50%。

Unity的骨骼动画插件

而在Unity3D中骨骼动画插件有比较多,例如Uni2D,SmoothMovoe,Puppet2D等等,但为了方便美术人员编辑我们项目使用是spine

Spine介绍

spine容易上手,并且它提供了mesh,通常来说一张纹理只有4个顶点,左下右下左上右上,但是有了mesh,我们可以抓取这个图片,并设置大量的顶点给它,之后就能通过对顶点的设置完成图片的拉伸形变,比如乳摇功能。

spine中30帧为1s,最新版中也提供了IK,可以将骨骼固定,做动作

在Unity中导入骨骼动画

1:准备好unity使用Spine所需要的运行库,可到如下地址https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-unity

使用git下载,或直接下载master.zip文件.

2:准备好Spine导出好的动画文件,正好最近偶尔玩一个游戏,里面使用了Spine制作的骨骼动画,我就直接使用它做好的资源记录一下步骤,仅作笔记使用.

我这里的动画文件资源如图:

这里需要提前做一个准备工作,把上图中的enemy_hunter.atlas文件重名为enemy_hunter.atlas.txt,因为unity无法识别.atlas文件,后面无法进行资源导入.

3:现在准备工作ok了,我们可以创建一个unity工程了.

a:把master.zip文件中spine-runtimes-master\spine-unity\Assets\spine-unity文件夹复制到工程的Assets文件夹中

b:把master.zip文件中spine-runtimes-master\spine-csharp\src文件夹中所有内容复制到工程的Assets\spine-csharp文件夹中

4:导入资源

a:这里我在资源面板右键新建一个文件夹,用来存放导入的资源,建议导入顺序为".png" ".json" ".atlas.txt",这样在最后导入".atlas.txt"文件的时候,会自动生成enemy_hunter_Material.mat文件和enemy_hunter_Atlas.asset文件.

b:右键新建"spine skeletonData"类型文件,名称为"enemy_hunter_SkeletonData.asset",这里结合网上的资料,感觉以前的版本,应该都是自动生成的,不知道这里为什么需要手动建立这个文件,之前的版本也没有使用过,纯属猜测.文件新建好后,需要配置Skeleton JSON属性,指定"enemy_hunter.json"文件,然后点击"Attempt Reimport"的按钮即可.完成后如图:

到目前为止,骨骼动画的导入工作就完成了.

5.现在我们把这个骨骼动画加入到场景中看看效果.

新建Spine SkeletonAnimation对象,Skeleton Data Asset属性指定为"enemy_hunter_SkeletonData.asset"文件.然后Advanced中Animation属性选择一个动作,Loop属性勾上,即可循环播放.

如图:

6:现在即可在Game面板播放观看效果.至此Spine骨骼动画导入unity已完成!

在Unity中使用骨骼动画

可以使用spine制作骨骼动画来给unity使用。spine提供了unity运行包。运行包的版本一定要和spine版本一致,不然会报错。

导入spine动画:

由spine导出的动画文件有3个:xx.atlas,xx.json,xx.png。将这三个文件直接导入unity会报错,将xx.atlas改为xx.atlas.txt,这时会自动生成xx_Atlas.asset,xx_Material.mat。然后在unity里面create spine SkeletonData,指定xx_Atlas.asset和xx.json。就可以用SkeletonData生成动画了。

控制动画播放:

SkeletonAnimation skeletonAnimation;   //gameobject的component。Spine.AnimationState spineAnimationState = skeletonAnimation.state;Spine.Skeleton skeleton;spineAnimationState.SetAnimation(0, animationName, true);

切换动画的bug:

由于spine在切换动画的时候自动补偿,用于动画的平稳过度。但是会导致残影等bug,这时候需要在SetAnimation前调用

skeletonAnimation.skeleton.SetToSetupPose ();spineAnimationState.ClearTracks ();

来消除前一个动画的影响。

添加事件:

skeletonAnimation.state.Start:开始播放
skeletonAnimation.state.End:动画被清除或者中断
skeletonAnimation.state.Interrupt:动画被打断
skeletonAnimation.state.Complete:播放结束
skeletonAnimation.state.Event:用户自定义事件

事件设置采用lambda表达式:

skeletonAnimation.state.Complete += (state, trackIndex,loopCount) => {            Debug.log("");        };

动态获取slot的坐标:

Vector3 pos = skeletonAnimation.skeleton.FindSlot("hat_1").Bone.GetWorldPosition(transform);

关于"unity中spine怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

动画 骨骼 文件 顶点 影响 蒙皮 骨头 资源 文件夹 人体 动作 属性 更多 模型 版本 准备 控制 生成 事件 小腿 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 南京欣网互联网络科技有限公司 广州淘业互联网络科技 互联网科技有限公司经营范围 互联网与新科技 互联网与未来科技 科技创新互联网企业 广州紫鲸互联网科技 金融科技和互联网金融 海南购全球互联网科技 互联网巨头投资的硬核科技 阿里巴巴算科技企业还是互联网 青岛科技大学互联网大赛研究生 玉溪互联网科技怎么选 成都互联网科技公司工作好不好 滨湖区互联网智能科技产品有哪些 科技互联网的核心竞争力 保山互联网科技靠谱吗 易租星互联网科技有限公司 黑龙江互联网科技公司 北京互联网科技公司 美国互联网科技 科技互联网创业计划书 中国互联网金融科技基金 互联网和黑科技的看法 互联网还是高科技吗 工业互联网等科技实现智能化赋能 银行科技岗属于互联网吗 本届互联网大会上的黑科技 兰石爱特工业互联网科技分公司
0