“scene-script”:"tool.js"在这个插件脚本中 调用如下代码 报错没有这个文件,但是 是有的。如果这样写 不可以 。请问各位大佬 应该怎么操作
cc.loader.loadRes(newUrl, cc.SpriteFrame, function (err, spriteFrame) {
if (err) {
cc.error(err.message || err);
return;
}
cc.log('Result should be a sprite frame: ’ + (spriteFrame instanceof cc.SpriteFrame));
});
求插件大佬 指点下 ,
目前不支持 loadRes 喔,不过可以通过 assetdb 的 API(如 queryAsset)获得对应 spriteFrame 的 uuid,然后通过 cc.AssetLibrary.loadAsset(uuid, callback) 进行加载。之后我们会加入 loadRes 的支持。
谢谢大佬 问题 解决了,我已经 找到所有的 scene 并且自动修改了 多语言插件 数据 并且保存,可是 还有全部prefab ,目前 不知道如何像scene那样 修改数据 保存.列如这样的api _Scene.loadSceneByUuid, _Scene.save();
‘StartFindPrefabi8n’: function (event, language) {
Editor.warn("language == " + language);
var i8nSpIsAdd = function (language, spriteFrameSet) {
spriteFrameSet.forEach(function (item) {
if (language == item.language) {
Editor.warn("language == " + language + " item.language == " + item.language);
return true;
}
});
return false;
}
var cloneObj = function cloneObj(obj) {
var newJsonObj = {}; newJsonObj = JSON.parse(JSON.stringify(obj));
for (items in obj) {
if (typeof obj[items] == "function" || typeof obj[items] == "undefined" || obj[items] instanceof RegExp) {
newJsonObj[items] = obj[items];
}
}
var newObj = new obj.constructor;
for (items in newJsonObj) {
newObj[items] = newJsonObj[items]
}
return newObj;
}
Editor.assetdb.queryAssets("db://assets/**\/*", 'prefab', function (err, prefabs) {
prefabs.forEach(function (prefab) {
Editor.log("prefab" + JSON.stringify(prefab));
cc.AssetLibrary.loadAsset(prefab.uuid, function (error, asset) {
if (error) {
Editor.log(" prefab uuid error" + error);
return;
}
// node = cc.instantiate(asset);
debugger;
asset.data.children.forEach(function (node) {
let i8nsp = node.getComponent("LocalizedSprite");
if (i8nsp) {
//不需要重复添加
if (i8nSpIsAdd(language, i8nsp.spriteFrameSet)) {
Editor.log(language + "多语言已经添加过");
return;
}
let _uuid = i8nsp.spriteFrameSet[0].spriteFrame._uuid;
Editor.Ipc.sendToMain('testi18:findUuid', _uuid, language, function (url, uuid) {
if (uuid) {
cc.AssetLibrary.loadAsset(uuid, function (error, asset) {
debugger;
if (!error) {
if (asset) {
let length = i8nsp.spriteFrameSet.length;
i8nsp.spriteFrameSet[length] = cloneObj(i8nsp.spriteFrameSet[0]);
Editor.log("spriteFrame==" + i8nsp.spriteFrameSet[length].spriteFrame + " asset== " + asset);
i8nsp.spriteFrameSet[length].spriteFrame = asset;
i8nsp.spriteFrameSet[length].language = language;
//虽然报错但还是可以使用
// _Scene.save();
Editor.success(url + " 多语言添加成功")
}
else {
Editor.failed("资源加载错误 url" + url + " uuid " + uuid);
}
}
});
}
else {
Editor.warn("url " + url + " not find ");
}
});
}
});
// Editor.assetdb.saveExists(prefab.url, asset, function (err, meta) {
// if(err)
// {
// Editor.error("saveExists err "+err);
// }
// else
// {
// Editor.log("meta" + JSON.stringify(meta));
// }
// });
//do more work
});
});
});
//发送回调信息
if (event.reply) {
let str = "发送回调信息"
event.reply(str);
}
}
这样修改 保存不了数据
顶一下,别沉啊
cc.loader.load(_iconUrl, function (err, tex) {
var spriteFrame=new cc.SpriteFrame(tex)
node.getComponent(cc.Sprite).spriteFrame=spriteFrame;
});
这个已经解决 了 我想问 怎么再插件里操作prefab
解决了吗?我也想在插件里面操作prefab。另外_Scene.loadSceneByUuid好像不能用啊,说_Scene不存在
找到保存的方法了吗?
Editor.assetdb.queryAssets(“db://assets/resources/levels/level_t*”, ‘prefab’, function (err, prefabs) {
prefabs.forEach(function (prefab) {
cc.log(“prefab” + JSON.stringify(prefab));
cc.AssetLibrary.loadAsset(prefab.uuid, function (error, asset) {
cc.log(error, asset);
});
});
});
loadAsset出来的asset并不是prefab的内容,所以不能修改后直接save