1.通过挂点的方式,将外部图片挂载到骨骼节点上
2.通过为 slot 设置贴图纹理,可使用该方法实现局部换装功能。
setSlotTexture(slotName: string, tex2d: Texture2D, createNew?: boolean)
3.使用皮肤附件来换装
- this.monsterSkeleton.setAttachment("Head_Enemy", "Unit_03/Weapon");
- this.monsterSkeleton.findSlot("Head_Enemy").setAttachment(att);
/**
* 设置皮肤
* @param dressId
*/
setSpineAttachment(dressId: number) {
let dressCfg = DressData.instance.geDressCfgById(dressId);
let runtimeData = this.spine.skeletonData.getRuntimeData();
let skin = runtimeData.findSkin(dressCfg.skin); //获取皮肤数据(皮肤数据可以在编辑器里配置,也可以在代码里动态创建)
let SlotArr = dressCfg.SlotName.split(",");
let Att = dressCfg.attName.split(",");
// console.log(this.spine.skeletonData)
for (let i = 0; i < SlotArr.length; i++) {
let slotName = SlotArr[i];
let attachmentName = Att[i];
var r = runtimeData.findSlotIndex(slotName);
let Attachment = skin.getAttachment(r, attachmentName);
// console.log(slotName, attachmentName, Attachment)
this.spine.findSlot(slotName).setAttachment(Attachment);
}
}
let bodySkinPath = "Unit_01_Enemy/Character/Character_01";
let weaponSkinPath = "Unit_01_Enemy/Weapon/Weapon_01";
let weaponSlotName = "Unit_04/Weapon_02"; ``
let weaponAttName = "Weapon_S_XY";
this.monsterSkeleton.setAnimation(0, "Idle/Idle_01", true);
let runSkeletonData = this.monsterSkeleton.skeletonData.getRuntimeData();
// let weaponSkin = runSkeletonData.findSkin(weaponSkinPath);
// let slotInex = runSkeletonData.findSlotIndex(weaponSlotName);
// console.log(weaponSkin.attachments);
// let weaponAttachment = weaponSkin.getAttachment(slotInex, weaponAttName);
// console.log(weaponAttachment);
// // let agent = weaponSkin.attachments[0];
// // console.log(agent);
// this.monsterSkeleton.findSlot(weaponAttName).setAttachment(weaponAttachment);
// let data = this.monsterSkeleton.getAttachment("Head_Enemy", "Unit_03/Head_Enemy");
// console.log(data);
let bodySpin = runSkeletonData.findSlot("Weapon_S_XY");
let weapoSkin = runSkeletonData.findSkin(weaponSkinPath);
let slotIndex = runSkeletonData.findSlotIndex("Weapon_S_XY");
let att = weapoSkin.getAttachment(slotIndex, "Unit_03/Weapon");
console.log(slotIndex, att);
// this.monsterSkeleton.setAttachment("Head_Enemy", "Unit_03/Weapon");
this.monsterSkeleton.findSlot("Head_Enemy").setAttachment(att);
let slot = this.monsterSkeleton.findSlot("Head_Enemy");
slot.setAttachment(att);