CocosCreator3.8研究笔记(十一)CocosCreator Prefab(预制件)理解


相信很多朋友都不知道 Prefab 是什么?为什么要使用Prefab ? 怎么使用Prefab?


接下来,我们就一步一步来揭晓答案。


一、Prefab 是什么 ?


Prefab:大家习惯性地称为“预制件” 或“预制体” ,简单说,就是把场景对象、节点、组件、以及组件上的数据,打包存储起来,方便复用。


资源管理器 中的预制件资源,是预制件的序列化文件。

预制件资源被拖拽到 层级管理器 中就会生成一个预制件实例。


在这里插入图片描述


双击预制件资源,会进入预制件的编辑模式,可点击 场景编辑器 左上方的按钮来 保存 修改或者 关闭 编辑模式。


预制件节点在 属性检查器 中呈现 绿色 时表示与资源关联正常;呈现 红色 则表示关联的资源丢失。


在这里插入图片描述


二、为什么要使用预制体

当我们想制作一个能复用、通用性强、个体之间存异较小的资源,我们应该首选Prefab预制体。


例如:

以下背包中的物品:每个物品都有一张背景边框 ,一张icon 图片,一个label 数量,还有一把锁的图标。


在这里插入图片描述


每个背包物品,结构都相同,仅仅是每个元素的内容不同,因此我们就可以设计一个Prefab :

KnapItem(Node)

		itemBG   (Sprite)

    itemIcon (Sprite)

    itemCount(Label)

    itemLockFlag (Sprite)

三、预制件的使用


1、创建预制件


创建预制件有两种方法:

  • 在场景中将节点编辑好之后,直接将节点从 层级管理器 拖到 资源管理器 中即可完成预制件资源的创建。


  • 点击 资源管理器 左上方的 + 按钮,或者点击面板空白处,然后选择 Node Prefab 即可。


预制体创建完成后,有一个属性:Persistent,标记该预制体是否需要同步,默认值为false 。

在这里插入图片描述


2、预制件的使用


(1)、创建预制体和生成预制体实例


将预制件资源从 资源管理器 拖拽到 层级管理器场景编辑器,即可在场景中生成一个预制件的实例。


场景中的预制件实例对象,数据源来自预制件资源的反序列化,所以它的数据默认同步了预制件资源。


如果对预制件实例中的各项属性进行修改,修改的数据会被存储在预制件实例中,不会影响到预制件资源和它生成的其它预制件实例的数据


(2) 、场景中编辑预制件节点


(1)、常规操作

层级管理器 中选中预制件节点,属性检查器 的顶部便会出现几个可操作的按钮:


在这里插入图片描述


  • **编辑资源图标:**点击后,可以在场景编辑器中编辑资源,还可通过资源管理器中双击预制体资源来实现。

  • **取消关联当前预制体资源图标:**还原为普通节点。预制件节点可变为普通节点,即完全脱离和资源的关系。


    还可通过点击 Creator 顶部菜单栏中的 节点 -> 取消关联当前的 Prefab 资源 来实现。

  • 定位资源图标:便于快速在 资源管理器 中定位到预制件资源,点击后资源管理中的资源会出闪烁。

  • 从资源还原图标:将当前预制件实例的数据还原为预制件资源中的数据,其中名字、位置和旋转不会被还原为预制件资源中的数据。

  • 更新到资源图标:将当前预制件实例的所有数据更新到所关联的预制件资源中。


(2)、新增节点


在预制件实例下增加的新节点,在节点名字的右下角会有一个 + 标志,它的数据存储在预制件的实例下,不会影响关联的预制件资源的数据。


在这里插入图片描述


(3)、新增组件


在预制件实例下增加新组件,在组件名字的后面会有一个 + 标志,它的数据存储在预制件的实例下,所以不会影响关联的预制件资源的数据。


在这里插入图片描述


(4)、删除组件


在预制件实例下删除 非预制件实例下新增的组件,会在 属性检查器 上增加一条删除的组件的数据,它的数据存储在预制件的实例下,所以不会影响关联的预制件资源的数据。


四、预制件的使用限制

  • 不允许在预制件实例中删除从预制件资源中创建的节点
  • 不允许在预制件实例中更改从预制件资源中创建的节点的层级关系
  • 不允许预制件嵌套自己

猜你喜欢

转载自blog.csdn.net/lizhong2008/article/details/132778189