Scene/Prefab里,自定义组件的__type__是如何计算的?

类似这样的:
"__type__": "7586fzM7eFENJI+ECnk24Qk",

你好,这是随机生成的。

sorry没说清楚。我的意思是,怎么通过这个type,找到对应的组件的名字?

另外,有的Node里有一个id,例如"_id": "08cd9OHqd9PAZjdTj0lhsUt", ,请问这个有什么作用吗?

额,这个是引擎序列号的时候使用的,无法根据id获取,使用name获取吧

name似乎是空的?

{
    "__type__": "7586fzM7eFENJI+ECnk24Qk",
    "_name": "",
    "_objFlags": 0,
    "node": {
      "__id__": 3
    },
    "_enabled": true,
    "aaa": {
      "__id__": 4
    },
    "bbb": {
      "__id__": 12
    }
  },
`

这个 ID 是用来防止切换场景时 persist root node 被重复创建用的。用户不需要关心。

用 cc.js._getClassById,但这个查找操作不应该是用户需要进行的

组件默认是没有储存名字的,节点才有。

那这个id的取值有什么要求吗?我需要自己用代码生成Node,是不是只要是一个唯一的id就可以了?

有具体的算法吗?或者有没有一个文件保存映射关系?

在做一个插件,需要用到这些。

用户不应该关心这个 ID,你要生成 node 直接 new cc.Node 就好。

加载脚本的时候,会自动生成映射关系,没有保存在文件里。

你就直说你想做什么功能吧

我是直接操作json文件的[quote=“jare, post:8, topic:37966”]
你就直说你想做什么功能吧
[/quote]
prefab嵌套和自动更新。

在编辑器下,可以使用 Editor.UuidUtils.uuid() 获得新的唯一 id。

:ok_hand:

有没有什么方法根据prefab文本判断里面的哪个__type__ 是自定义js脚本

不以cc开头的都是自定义脚本吗