动态修改预制体图片 导致其他实例化对象也跟着改变

使用sprite.spriteFrame.setTexture动态修改预制体内的精灵图片,会导致所有该预制体实例化对象的图片都改变

预制体 myPicPrefabs:

cc.Class({
extends: cc.Component,

properties: {
    pic: cc.Sprite,
    setPic: function (value) {
            this.pic.spriteFrame.setTexture(cc.url.raw('resources/' + value + '.png'));
    }

在app中 实例化 myPicPrefabs:

var pic1 = cc.instantiate(this.myPicPrefabs);
var pic2 = cc.instantiate(this.myPicPrefabs);
pic1.setPic(1);
pic2.setPic(2); //这里会导致pic1的图片也改变,和pic2一样

请教,这个问题该怎么处理,或者有什么其他办法实现类似功能,感谢

SpriteFrame 是资源,全局只会有一份实例。如果你要不同的组件使用不同的 SpriteFrame,那你应该 new cc.SpriteFrame(texture)

1赞

ok了 感谢