3.0 TypeScript 引擎 spine 库 skeleton-texture 下的方法没有导出 (spine局部换装)

  • 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();
}
1赞

感谢反馈, 新版本会补上

1赞

为什么真机还是显示sp.SkeletonTexture is not a constructor报错
是还没有解决吗?

https://github.com/cocos-creator/engine/pull/8359 应该早就修复了

能告诉我这些尺寸怎么调整吗 我先在切换的图片都有些变形了不知道宽高应该怎么调整

3.8版本同样有这个问题,是故意的么,3.7可以贴图换装,3.8不可以

spine 在 3.8.0 换成 spine wasm 了,原先的自定义贴图换装,已经不能用了。