栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

CocosCreator动态替换Spine皮肤

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CocosCreator动态替换Spine皮肤

Spine皮肤系统

本案例使用的是Cococ2.x,3.x同理
在使用皮肤系统的情况下,我们可以实现同一套骨骼不同的材质

以CocosCreator引擎为例,实现在游戏中皮肤的切换

案例_0 全局切换

Spine导出后,会在Cocos目录下生成一下问题(如果有多个皮肤,会生成多个不同的图集)

创建出一个空节点,在节点上添加sp.Skeleton组件
把**.atlas后缀的文件挂载到SkeletonData**上面


创建出一个脚本,选择一个节点进行挂载,并把skeleton节点拖拽到脚本上

// 设置当前需要的皮肤
this.skeleton1.setSkin('Skin');// 设置皮肤1
this.skeleton1.setSkin('Skin2');// 设置皮肤2
案例_1 双节点局部替换

这里是案例是Cocos官方提供的方法
不做阐述
Spine 组件参考

案例_2 单一节点局部替换
		let skeleton = this.skeleton1;
        let slotName = '1/Body';
        let targetSkinName = 'Skin2';
        let targetAttaName = '1/Body2';// 这里获取的是Spine中皮肤占位符的名字
        const slot = skeleton.findSlot(slotName);// 获取当前动画中Slot数据
        const skeletonData = skeleton.skeletonData.getRuntimeData() as sp.spine.SkeletonData;// 获取 Spine Runtime 使用的 SkeletonData
        const slotIndex = skeletonData.findSlotIndex(slotName);// 当去当前Slot的index
        const skin = skeletonData.findSkin(targetSkinName);// 获取需要替换的皮肤数据
        const atta = skin.getAttachment(slotIndex, targetAttaName);// 获取目标皮肤相应index的皮肤占位符数据
        slot.setAttachment(atta);// 数据替换

最终实现效果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/902272.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号