素材巴巴 > 程序开发 >

随笔-Unity中Spine层级拆分

程序开发 2023-09-25 19:07:38

写在最前面:

        在我们开发项目的过程中,因为是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.其实在用这个功能的时候会有很多不如意的地方,总感觉不是那么的好用,但这个方法我认为也是一个比较简单的方法了,不用写复杂的代码,只要拆分的时候细心是很容易达成我们想要的结果的。


标签:

上一篇: vue项目学习 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。