-
Creator 版本:3.0.0
-
目标平台:全平台 TypeScript 引擎 相关
项目需要spine对象局部换装,发现相同的方法在2.4.2上可以使用,在3.0.0上会报错 SkeletonTexture 没有相关构造方法, 研读3.0 TypeScript 引擎 代码后发现,TS引擎没有导出skeleton-texture.ts 相关的方法
解决办法:
在 resources/3d/engine/cocos/spine/index.ts 下导出skeleton-texture
export * from ‘./skeleton-texture’
局部换装示例代码:
changeSlot(sk:sp.Skeleton, slotName:string, texture:Texture2D) {
//获取插槽
let slot = sk.findSlot(slotName);
//获取挂件
const skeletonData = sk.skeletonData.getRuntimeData();
console.log(skeletonData);
const skin = skeletonData.findSkin(“default”);
console.log(skin);
const slotIndex = skeletonData.findSlotIndex(slotName);
console.log(slotIndex);
let atta = skin.getAttachment(slotIndex, “face”);
const stex = new sp.SkeletonTexture({ width: 271, height:296 } as ImageBitmap);
stex.setRealTexture(texture);
let page = new sp.spine.TextureAtlasPage();
console.log(page);
page.name = texture.name
page.uWrap = sp.spine.TextureWrap.ClampToEdge
page.vWrap = sp.spine.TextureWrap.ClampToEdge
page.texture = stex
page.texture.setWraps(page.uWrap, page.vWrap)
page.width = 271;
page.height = 296;
var atlasText
let region = new sp.spine.TextureAtlasRegion()
region.page = page
region.width = 269;
region.height =294;
region.originalWidth =310;
region.originalHeight = 400;
region.rotate = false
region.u = 0
region.v = 0
region.u2 = 1
region.v2 = 1
region.texture = stex
region.offsetx = 9;
region.offsetY = 35;
console.log(region);
//替换region
atta.region = region;
atta.setRegion(region)
atta.updateOffset();
}