如何在编辑器环境下,动态切换资源?

需求这样的:
1.为了策划编辑方便,在开启编辑器生命周期后,策划在选择不同的文字(枚举)后,上面的Label中的font能够指定不同的.fnt文件,并直接显示结果
同理,无论fnt或者spriteframe,能否按枚举选择后,自动切图呢?
上传中…

2.如何通过代码默认资源的位置
当策划拖动脚本到属性面板中时,希望有个默认值在,例如fnt或spritframe,就好像button有样,上来就有三图片,省得让策划每个脚本都要拖两遍

改那个 .mate文件里的uuid

你好,可以使用自定义组件:
下面是参考参数连接:
https://docs.cocos.com/creator/manual/zh/scripting/reference/class.html#editor-参数

你好大佬,我在ts文件中加入了@executeInEditMode,让组件有了生命周期,就是想某个值改变时,在编辑器中能改变图片,让代码
cc.loader.loadRes(tFile, cc.SpriteFrame, function (error, res)
{
if (error) { cc.log('Error: ’ + error); return; }
self.sprite.spriteFrame=res;
});
能够在编辑器环境中执行
可结果就是找不到地址,但在模拟器就可以,不知道是不是编辑器运行时,不支持cc.loader.loadRes动态加载

你好这个需求现在有下面的方案:
在编辑器环境中,cc.loader.loadRes 无法正常加载资源文件,请使用cc.loader.load();
目前cc.loader.load()只能加载到字体未解析的数据文件,目前引擎中未开放手动构造bitMapFont的接口,所以无法动态切换label字体,目前能做到的是动态切换精灵。
1、编辑器环境动态切换图片
Code:

var texture2DEnum = cc.Enum({
    null: 0,
    texture_one: 1,
    texture_two: 2
});

cc.Class({
    extends: cc.Sprite,
    editor: {
        disallowMultiple: true,
        executeInEditMode: true,
        menu: "自定义组件/自定义精灵组件",
    },
    properties: {
        defaultSpriteFrameTexture2D: {
            default: texture2DEnum.null,
            type: texture2DEnum,
            displayName: "图片精灵初始贴图枚举",
            notify: function() {
                this.onLoadTexture2DToSprite();
            }
        },
        _oldDefaultTexture2D: null,
    },

    // LIFE-CYCLE CALLBACKS:

    // onLoad () {},
    start () {
        this.onLoadTexture2DToSprite();
    },

    onLoadTexture2DToSprite () {
        this.defaultTextureUrl = cc.url.raw(`resources/texture_${this.defaultSpriteFrameTexture2D}.jpg`);
        if (this._oldDefaultTexture2D !== this.defaultTextureUrl) {
            this._oldDefaultTexture2D = this.defaultTextureUrl;
            if (this.defaultSpriteFrameTexture2D !== texture2DEnum.null) {
                cc.loader.load(this.defaultTextureUrl, (err, resTexture2D)=> {
                    this.spriteFrame = null;
                    this.spriteFrame = new cc.SpriteFrame(resTexture2D);
                });
            }
            else {
                this.spriteFrame = null;
            }
        }
    }
});

2、[quote=“guoyiweii, post:1, topic:78766”]
当策划拖动脚本到属性面板中时,希望有个默认值在,例如fnt或spritframe,就好像button有样,上来就有三图片,省得让策划每个脚本都要拖两遍
[/quote]
这个需求可以利用creator的控件库插件解:
将需要用到的prefab拉到控件库,下次使用的时候只要拖出来就行。

大佬,按照你的写法,图片是换过来了,可Sprite组件中的SpriteFrame的路径是空的。找了好些帖子自己也试验去解决,都不行,你这有办法做到吗?

请问.ts语法下怎么设置?
notify: function() {
this.onLoadTexture2DToSprite();
}
这个写法好像不行