node数组保存预制体内部节点切换会丢失

  • Creator 版本:3.8.3

  • 重现方式:b.prefab里面放a.prefab 保存,切换再回来就会丢失 主要是因为 每次打开b,a下的节点的uuid都会改变所导致的
    NewComponent 脚本

import { _decorator, Component, Node } from ‘cc’;
const { ccclass, property } = _decorator;

@ccclass(‘NewComponent’)
export class NewComponent extends Component {
@property({ type: [Node], visible: true })
nodes = []
}


Snipaste_2024-07-01_16-28-02

  • 编辑器操作系统: Windows 10 专业版 64位
  • 重现概率: 100%

没有遇到过 换种写法呗
@property(type: Node })
nodes:Node[] = []

嵌套预制的信息没法序列化,之前在3.8.0的时候遇到过类似的问题。之前找到的原因是因为,预制文件(.prefab)是一个Json数组对象,内部通过__id__字段记录对节点或组件的引用;这个字段的值对应了节点或组件在Json数组里的位置;对于嵌套预制(a)而言,在当前预制(b)中的记录只有一条,相当于一个普通的节点或组件,所以无法正确关联到a下的节点或组件。

可以直接用vscode或其他工具打开.prefab文件看一下就很直观了。

对于嵌套预制(a)而言,在当前预制(b)中的记录只有一条 并不是 在b中会记录所有的节点信息 比如a下的Node-001的信息b中也会有对应的的信息 会丢失的主要原因是因为 每次打开b,a下的节点的uuid都会改变 这一点我补充说明一下

一样没屌用

是这样子的没错