在2.4.x中可以这样
在3.6.x中有没有类似的方法,可以直接根据一个Node的数据创建Prefab
好像没有, 找了下 Cocos 的 顶部菜单>开发者>消息列表 这个里面也没有
create-node
创建节点
* options {CreateNodeOptions}
* parent {string} 父节点 uuid
* components? {string[]} 组件名字
* name? {string} 节点名字
* dump? {INode | IScene} node 初始化应用的 dump 数据
* keepWorldTransform? {boolean} 是否保持新节点的世界坐标不变
* type? {string} 资源类型
* canvasRequired? {boolean} 是否需要有 cc.Canvas
* unlinkPrefab? {boolean} 是否要解绑为普通节点
* assetUuid? {string} asset uuid,从资源实例化节点
@returns {string | string[]} 返回新节点的 uuid
人工置顶一下
试试
cce.Prefab.createPrefabAssetFromNode(nodeUUid,“db://assets/Node.prefab”)
第二个参数是保存路径的格式
3.7.2 亲测在编辑器扩展的场景脚本可以生成 prefab
const { director } = require('cc');
const scene = director.getScene() as cc.Node;
if (!scene) {
console.error("can not get scene");
return false;
}
const canvas = scene.children[0];
if (!canvas) {
console.error("can not get canvas");
return false;
}
let helloNode: cc.Node | undefined;
for (const child of canvas.children) {
if (child.name === "hello") {
helloNode = child;
break;
}
}
if (!helloNode) {
console.error("can fine hello node");
return;
}
const filePath = `db://assets/prefabs/test.prefab`;
const nodeUuid = helloNode.uuid;
const prefabUuid = await cce.Prefab.createPrefabAssetFromNode(nodeUuid, filePath);
,你试试new一个node再创建prefab会不会报错
试试
cce.Prefab.createPrefabAssetFromNode(nodeUUid,“db://assets/Node.prefab”)
第二个参数是保存路径的格式
3.8.2 版本,cce is not defined
本来想用 cce.Node.query(uuid) 的,找不到 cce 。3.8.x 有什么替代方法不
cce可以用,看我框架的实现extensions/app/engine/scene.ts
cce 实现了很多功能 我调试断点可以看到cce.Node,cce.Prefab里面有些方法的是我想用的,但是参数描述的什么根本看不出来 有什么方式可以看到api吗