-
Creator 版本:
-
目标平台:
-
详细报错信息,包含调用堆栈:
-
重现方式:
-
之前哪个版本是正常的 :
-
手机型号 :
-
手机浏览器 :
-
编辑器操作系统 :
-
编辑器之前是否有其它报错 :
-
出现概率:
-
额外线索:
Creator 版本:
目标平台:
详细报错信息,包含调用堆栈:
重现方式:
之前哪个版本是正常的 :
手机型号 :
手机浏览器 :
编辑器操作系统 :
编辑器之前是否有其它报错 :
出现概率:
额外线索:
spine局部换装
因为近期项目(对标跳跳神枪手)中需要用到 spine , 进行任务中枪支的更换. 奈何 creator 官方文档实在极简, 论坛又资料不详, 幸运的是上网找到了篇资料, 证实有效, 现在特意做个记录
先上链接: https://my.oschina.net/u/3905200/blog/1844674
1 了解 spine 结构:
skeleton --> bones(骨骼) --> slot(插槽) --> attachmnet(附件)
2 替换过程
(1) creator 编辑器: spine 文件拖入官方提供组件中, 我们的需求就是要在游戏中替换黄色椭圆中的枪支
(2) 代码逻辑
var spine = this.spine = this.getComponent(‘sp.Skeleton’); //定义当前节点脚本组件 sp.Skeleton
//局部换装: skeleton(脚本组件), slotName(需要替换图片的插槽名字), targetSkinName(替换目标的皮肤名字), targetAttaName(用于替换的附件名字)
chaneSkin(){
let skeleton = this.spine;
let slotName = ‘gun’;
let targetSkinName = ‘default’;
let targetAttaName = “gun4”;
const slot = skeleton.findSlot(slotName);
const skeletonData = skeleton.skeletonData.getRuntimeData();
const slotIndex = skeletonData.findSlotIndex(slotName);
const skin = skeletonData.findSkin(targetSkinName);
const atta = skin.getAttachment(slotIndex, targetAttaName);
console.log(‘change cloth:’, slot, skin, slotIndex, atta);
slot.setAttachment(atta);
},
2 代码替换原理
(1) 获取得到当前需要更换附件的插槽数据(包括 index attachment);
(2) 获取当前皮肤下用于替换的附件;
(3) 在当前插槽下设置更换附件;
后记: ok, 到此局部更换spine皮肤功能就完成了, 欢迎加v: liang13979850665 能一起讨论学习,–热爱游戏开发者_shl1937
这种方式,必须是要是插槽才行?如果要变换的东西多了,第一次加载的时候,会很卡的
是否有原生那种可以直接替换纹理贴图的方式去实现换装,而不是去替换附件
最近研究了一下局部换装,刚好可以来回答这个问题。
首先:是否有原生那种可以直接替换纹理贴图的方式去实现换装,而不是去替换附件?
没有,需要自己改底层。
前提:
首先肯定要能动态替换,不能一次性加载所有图集资源(功能迭代后,换装越来越多,加载越来越卡是不能被接受的),然后又要保证和spine底层的设计尽可能的贴合,并且还有一个点就是,我们需要注意不要因为替换了原来的attachment(附件)的数据,导致想还原最初的样子的时候,又需要加载一张贴图。
题主的方案,没有解决非一次性加载资源的问题。
修改思路:
修改的方案可以比较简单:
1.首先我们使用这张纹理,构建spine内部的page和region。
2.然后用region去更新对应的attachment(附件)的相关数据。
这样就可以了。
需要注意的是,这个是有局限性的。在2的描述中,有“相关数据”,代表不是所有数据。
这里比较繁杂,就是一些json里的数据,如果是mesh的类型,就有triangles,uv,等信息。
所有如果使用这种替换,需要注意前后纹理是能满足这些要求的。
更多具体的,可以自己研究一下。
大神,能写个demo吗
有demo,但是上传没有用哈。因为要涉及c++修改。你看一下哪里思路不清楚,我可以解释一下
方便加QQ123244355讨教下吗
嗯嗯可以的
可以加QQ 244369852 详细聊下么
mark
mark
楼主,我问一下,人物的所有枪支都是在一个插槽(slot)下吗?还是每个插槽下有一把武器(比如说有十把武器,这十把武器分别在十个插槽下),能否把你的spine的动画武器结构给我看一下呢?谢谢
mark
能换成功,但是我切换动画就变回了原来的这个是什么问题?
还有后续吗
楼主,能给个demo嘛?
怎么一个说法?