-
【问题描述】
- 在Unity中使用Spine换肤,必须要两个皮肤都有对应的插槽信息,要不然新皮肤无法完全替换掉旧皮肤
- 举个例子,未修改前,皮肤1有6个插槽附件数据,对应插槽索引分别是1,2,3,5,7,8;皮肤2中1,4,6,8这4个插槽有附件。那么在游戏过程中我调用SetSkin方法后,实际上皮肤2只成功替换掉1和8这两个插槽上的附件,因为皮肤1上没有4和6这两个插槽的附件数据。同样的,因为皮肤2没有2,3,5,7这4个插槽的数据,如果皮肤2原本想要的效果是让2,3,5,7这几个插槽处不显示附件,是没办法做到的。
-
【解决方案】
- 一、修改Spine源码。
- 因为Spine-to-unity插件的源码就是这样的逻辑的,如果两个皮肤上没有相同的插槽数据,就不会执行替换操作。可以通过修改代码,让spine可以同时把新皮肤的新增的附件数据附加到对应插槽上,把旧皮肤多余的插槽附件移除掉。但是这个方法并不推荐,因为这样会牵一发而动全身,很有可能会导致各种莫名其妙的BUG。所以这个方法不太建议。
- 二、让美术改。原理很简单,既然旧皮肤必须要有对应的插槽才能让新皮肤替换,那么就确保新旧皮肤的插槽信息都是一致的就好了。但后来跟美术那边讨论后发现,如果要让插槽有数据,那么就必须在插槽中添加实际的附件数据,如加一张图片什么的,只在spine软件里新建一个占位符是没有用的。spine动画软件也无法设置让某个插槽中的附件在某个皮肤下不显示。在插槽中添加了图片后,在动画中必然会显示出来,然而有些皮肤我们是不希望出现某个部位的图片的。最后,我们想出的解决方法就是如果某个皮肤某个插槽是不希望有图片出现的话,就让弄一张很小的透明的图占位,这样就能确保所有皮肤都有相同的插槽,而又能让各个皮肤选择哪些插槽该显示东西,哪些插槽不该显示东西了。
Spine无法在游戏中完全换肤的坑
最新推荐文章于 2024-04-09 17:02:30 发布