CocosCreator中的Prefab文件格式总结

版权声明:本文为博主原创文章,转载注明来源。 https://blog.csdn.net/u013654125/article/details/87259315

CocosCreator所有的Prefab都是以下类似的格式:

我们学会用文本编辑器查看Prefab文件,可以帮助我们更轻松的查找节点查看节点和组件信息批量修改节点和组件信息等等。

因为在文本编辑器中的Prefab文件才是原始的。

而且CocosCreator中的查看的Prefab信息并不是一定完全,此时,我们就更需求借助文本编辑来查看。

一、格式总纲

Prefab的格式是一个Json数据格式,且这个Json数据是个数组

Prefab里的所有节点信息或者组件信息都是同一级中

该数组的第一个元素是cc.Prefab,且cc.Prefab只有一个。

接下来是根节点。

节点的开始标志是cc.Node,节点的结束标志是cc.PrefabInfo

——意思就是cc.Node和cc.PrefabInfo就是一个CocosCreator中的节点,

——这中间包含所有的子节点和该节点的组件信息。

——且先描述子节点信息,再描述组件信息(如果没有子节点,则直接描述组件信息)。

比如说我的Prefab在CocosCreator中是这样:

根节点是test1,根节点下有子节点test2和test3,test3有子节点test4。

test1(有组件widget)

--test2(有组件sprite)

--test3(没有组件)

 -- --test4(有组件widget)

那么,文本的Prefab简洁格式就是这样:

[

{'__type__': "cc.Prefab"},

{'__type__': cc.Node, "_name": test1},

{'__type__': cc.Node, "_name": test2},

{'__type__': cc.Sprite, "_name": ""}, //test2的Sprite信息

{'__type__': cc.PrefabInfo}, //test2节点结束

{'__type__': cc.Node, "_name": test3},

{'__type__': cc.Node, "_name": test4},

{'__type__': cc.Widget, "_name": ""}, //test4的Widget信息

{'__type__': cc.PrefabInfo}, //test3节点结束

//注释:如果test3有组件,则在此添加信息

{'__type__': cc.PrefabInfo}, //test4节点结束

{'__type__': cc.Widget, "_name": ""}, //test1的Widget信息

{'__type__': cc.PrefabInfo}, //test1节点结束

]

二、__type_的类型为节点的状态

{
    "__type__": "cc.Node",
    "_name": "icon",
    "_objFlags": 0,
    "_parent": {
      "__id__": 45
    },
    "_children": [],
    "_tag": -1,
    "_active": true,
    "_components": [
      {
        "__id__": 47
      }
    ],
    "_prefab": {
      "__id__": 48
    },
    "_id": "",
    "_opacity": 255,
    "_color": {
      "__type__": "cc.Color",
      "r": 255,
      "g": 255,
      "b": 255,
      "a": 255
    },
    "_cascadeOpacityEnabled": true,
    "_anchorPoint": {
      "__type__": "cc.Vec2",
      "x": 0.5,
      "y": 0.5
    },
    "_contentSize": {
      "__type__": "cc.Size",
      "width": 95,
      "height": 95
    },
    "_rotationX": 0,
    "_rotationY": 0,
    "_scaleX": 1,
    "_scaleY": 1,
    "_position": {
      "__type__": "cc.Vec2",
      "x": 0,
      "y": 0
    },
    "_skewX": 0,
    "_skewY": 0,
    "_localZOrder": 0,
    "_globalZOrder": 0,
    "_opacityModifyRGB": false,
    "groupIndex": 0
  },

这里主要说一下"_parent"、"_children"和"_components"

1、_parent会引用父节点的id

2、_children会引用子节点的id

3、_components会引用组件的id

注:本人没看到节点或组件内有标明自己的id,只是从附属的父节点或子节点或组件才知道该节点的id。

这个不知道官方为什么不在自身节点中标明,而只是在关联的节点或组件中才标明。

三、__type__的类型为脚本组件的状态

脚本的格式大致为:

{
    "__type__": "ab1b1lVmBVEJJgoMRKZgwuI",
    "_name": "",
    "_objFlags": 0,
    "node": {
      "__id__": 1
    },
    "_enabled": true,
    "headIcon": {
      "__id__": 47
    },
    "headBox": {
      "__id__": 50
    },
    "levelTexture": {
      "__uuid__": "37bf4975-91b4-4aaa-8a11-7900989cbe63"
    },
    "danTexture": {
      "__uuid__": "4676b6bc-cde8-41df-ab2b-f550f141bf33"
    },
  },

1、__type__的名字是

ab1b1lVmBVEJJgoMRKZgwuI

这样格式的名字。

2、像headIcon这样引用的是Prefab的节点,"__id__"这个可能是节点id,也可能是组件id。

3、danTexture引用的是资源,所以这个资源引用着一个uuid,这个资源可能是图集、纹理、音效、字体等等。

4、_name、_objFlags、node、_enabled是脚本组件的信息,不是脚本的属性;放在"_enabled"的后面的才是脚本属性。

四、__type__为其他组件的状态

基本上其他组件都是有着与CocosCreator编辑器上的属性对应着的字段。

在此列出Sprite和Widget组件的格式,其他就不一一详细说明了。

比如,Sprite组件:

{
    "__type__": "cc.Sprite",
    "_name": "",
    "_objFlags": 0,
    "node": {
      "__id__": 3
    },
    "_enabled": true,
    "_spriteFrame": {
      "__uuid__": "743d3deb-016b-430f-aa4b-5b399828495e"
    },
    "_type": 0,
    "_sizeMode": 0,
    "_fillType": 0,
    "_fillCenter": {
      "__type__": "cc.Vec2",
      "x": 0,
      "y": 0
    },
    "_fillStart": 0,
    "_fillRange": 0,
    "_isTrimmedMode": false,
    "_srcBlendFactor": 770,
    "_dstBlendFactor": 771,
    "_atlas": {
      "__uuid__": "02eee22c-49e2-49dd-ae41-af335d10d1db"
    }
  },

Widget组件:

{
    "__type__": "cc.Widget",
    "_name": "",
    "_objFlags": 0,
    "node": {
      "__id__": 3
    },
    "_enabled": true,
    "isAlignOnce": true,
    "_target": null,
    "_alignFlags": 45,
    "_left": 0,
    "_right": 0,
    "_top": 0,
    "_bottom": 0,
    "_verticalCenter": 0,
    "_horizontalCenter": 0,
    "_isAbsLeft": true,
    "_isAbsRight": true,
    "_isAbsTop": true,
    "_isAbsBottom": true,
    "_isAbsHorizontalCenter": true,
    "_isAbsVerticalCenter": true,
    "_originalWidth": 1046,
    "_originalHeight": 212
  },

大家可以参照自己的Prefab来对比查看就可以了。

五、场景文件fire的文本格式

fire文件的格式和Prefab的格式有相似之处,大家也了解了Prefab的格式结构后,也可以自行查看fire的文件了。

猜你喜欢

转载自blog.csdn.net/u013654125/article/details/87259315