spine是否可以用外部图片进行换皮

我希望可以做到外部图片替换spine一个部位上面的图片
网上有看到2dx的做法是新建sp.spine.RegionAttachment,这个时候问题就来了:
如何通过我们的Texture2D来设置sp.spine.TextureAtlasRegion和sp.spine.TextureAtlasPage,有人实现过吗?能否解答一下

9赞

这个问题经过几天研究,自己终于解决了:smile:
我们只需要找到需要替换的attachment,然后替换这个region

之前遇到问题就是如何通过Texture2D设置? 下面是我自己通过照搬sp.spine的脚本实现的

CreateRegion(texture) {

let skeletonTexture = new sp.SkeletonTexture()
skeletonTexture.setRealTexture(texture)
let page = new sp.spine.TextureAtlasPage()
page.name = texture.name
page.uWrap = sp.spine.TextureWrap.ClampToEdge
page.vWrap = sp.spine.TextureWrap.ClampToEdge
page.texture = skeletonTexture
page.texture.setWraps(page.uWrap, page.vWrap)
page.width = texture.width
page.height = texture.height

let region = new sp.spine.TextureAtlasRegion()
region.page = page
region.width = texture.width
region.height = texture.height
region.originalWidth = texture.width
region.originalHeight = texture.height

region.rotate = false
region.u = 0
region.v = 0
region.u2 = 1
region.v2 = 1
region.texture = skeletonTexture
return region

},

这样替换就行了

    let att = attachment
    let region = this.CreateRegion(texture) 
    att.region = region
    att.setRegion(region)
    att.updateOffset()

如果需要替换图集里面的图片,只需要传图集texture然后修改region的u,v,u2,v2就行了,希望对你们也有帮助

16赞

发一下效果

将旁边的箱子图片替换掉骨骼里的

棒呆,实测cocos creator 2.1.2可用

謝謝分享

请问

是什么原因呢 creator版本也是2.1.2

d.ts接口没开放,但是实际能使用

但是运行有错

说明你传的参数对象不是texture,CreateRegion(texture)里面texture需要的参数类型是cc.Texture,也许你传的是cc.SpriteFarme

这些其实可以不用设置的,用他texture默认就行了,主要赋值texture和设置width和height

mark

有没有大哥发一个2.1.2的demo啊 万分感谢

spine_change.zip (1.3 MB)
cocos creator 2.1.2

7赞

mark

现在还是有一个问题的,如果图片有透明部分的,替换的图片和骨骼的图片大小不一样会有问题,需要设置他的offset,但是现在还不知道怎么去设置,你们也尝试一下

mark spine换图

att.x = -20;
att.scaleX = 1.5;
att.scaleY = 1.5;

可以修改attment的属性

学习下