随笔-Unity中Spine层级拆分
写在最前面:
在我们开发项目的过程中,因为是2D游戏,其中运用了大量的Spine动画。但是在开发时遇到了一个问题就是需要把外界的一个Sprite精灵穿插到Spine的动画中去,这么说可能有点抽象,我举个例子:
一个厨师的Spine,其中有一个动画是厨师在切菜的动画。因为切的物品有很多种,所以并不能做到Spine中去,但是就会遇到问题,这个Sprite精灵需要在厨师的身体之上,又要在他的胳膊、手、刀的层级下面。而Spine本身是一个MeshRender的一个层级没有办法满足需求的。
不过还好Spine本身就给我提供好了解决办法,就是通过骨骼节点找到Spine中每个图片,将他们拆分出来,单独赋予层级,就可以解决这个问题。
步骤如下:
1.首先导入我们的Spine,然后打开SkeletonAnimation面板中的Advanced面板。
2.点击Add Skeleton Utility,会生成一个新的脚本组件Skeleton Utility。
3.点击Spawn Hierarchv后选择Follow all bones。此时会在Spine下面就会生成这个动画的各个骨骼节点。(此时完成此步骤是控制台可能会报错,可以无视)
4.这时候我们再回到Spine的GameObject的面板下,Add一个脚本SkeletonRenderSeparator
5.接下来继续在SkeletonRenderSeparator的面板中操作,点击Separator Slot Names中的+,打开后我们可以看到茫茫多的名字,这里面其实就是我们Spine拆开的图片了。(注意,这里显示的是图片名,并不是骨骼节点)
6.选择好自己需要调整层级的图片之后单机Add the missing renderers按钮,这时候Spine就会在他的节点下生成对应图片的GameObject。
7.在我们生成的节点上,可以看到都带有Skeleton Parts Renderer的脚本,这和脚本上就有我们在3D游戏中调整曾记得两个重要参数Sorting Layer和Order in Layer,我们就需要通过调整每个节点的层级来实现我们需要的结果。
8.此时观察细心的同学就可以发现我们原本Spine上面MeshRenderer已经被停止使用了,全靠生成的节点去显示我们的Spine。我们可以通过是否启用Skeleton Render Separator这个组件来控制我们的Spine是通过我们拆分层级来显示还是运用原本的Spine一体的显示方法。(可能我们只有一个动画需要拆分层级,其他动画不需要拆分,我们就可以在只有播放切菜动画时才对层级进行拆分,而其他的胜利动画或者待机动画不需要拆分,就可以运用这个功能)
9.接下来我们只需要仔细的调整动画的层级,就可以达到我们想要的效果了。
最后有一些问题需要注意:
1.首先就是在调整动画层级时,要把Spine的默认动画调整到我们需要调整的动画上再去拆分,因为不同的动画,Spine给我拆分的节点可能有所不同。
2.Spine给我自动分配的节点可能跟我们想象中的不太一样,他可能会把头和脚分到一个节点之中,这可能就需要我们对图片的拆分更加细致一些,才能满足我们的要求,不过这还是看需求而定。
3.其实在用这个功能的时候会有很多不如意的地方,总感觉不是那么的好用,但这个方法我认为也是一个比较简单的方法了,不用写复杂的代码,只要拆分的时候细心是很容易达成我们想要的结果的。
标签:
相关文章
-
无相关信息