预制体功能说明
阅读本文大概需要 20 分钟
为了开发者更好的了解与使用预制体,本文主要包含以下 3 个内容:
(1)预制体简介(2)预制体使用指南(3)使用注意事项
预制体简介
预制体是什么
- 预制体是可重复使用的游戏对象组合,是一种将游戏对象组合成一个整体并保存为一个独立资源的机制。预制体可以用来创建和存储一个游戏对象的所有组件、各项属性和子对象。当需要多次重复使用同一个游戏对象时,便可以使用预制体,将该游戏对象设置为预制体。
- 预制体内包含的所有的节点均为引用关系。
预制体基础规则
- 预制体结构
中文示例 | 英文示例 |
---|---|
- 预制体均包含一个预制体头结点,当创建一个空预制体时,会自动生成一个默认的头节点。
- 预制体头结点下为预制体子对象,子对象间可以是平级、父子级结构关系
预制体使用指南
预制体的创建与存储
新建预制体
方法:点击工程内容-预制体分类中【新建预制体】按钮
中文示例 | 英文示例 |
---|---|
已有对象生成为预制体
- 方法 1:选中对象管理器中对象,点击右键菜单中【生成为预制体】,将选中对象及其子对象生成为预制体
中文示例 | 英文示例 |
---|---|
- 方法 2:选中对象管理器中某实例状态的预制体引用对象头结点,点击右键菜单中【另存为新预制体】,选中的实例状态预制体引用对象将与原预制体脱离引用关系,并生成为新预制体
中文示例 | 英文示例 |
---|---|
预制体的存储
- 工程内容-预制体分类中存储着当前工程下所有的预制体资源
中文示例 | 英文示例 |
---|---|
- 每个预制体文件中其所引用的脚本、UI、材质均分别存于对应的文件类型下,不会与 prefab 文件整合存放同一工程内容分组中
预制体的编辑
预制体编辑视口中进行编辑
- 入口 1:在工程内容中选中某预制体,点击右键菜单中【编辑】或双击预制体文件,可在预制体编辑视口中打开选中预制体进行编辑
中文示例 | 英文示例 |
---|---|
中文示例 | 英文示例 |
---|---|
(通过工程内容打开预制体进行编辑)
- 入口 2:在对象管理器中选中某预制体头结点,点击右键菜单中【编辑预制体】,可在预制体编辑视口中打开选中预制体进行编辑
中文示例 | 英文示例 |
---|---|
(通过对象管理器打开预制体进行编辑)
在主场景中对预制体进行编辑
直接在对象管理器中选中某预制体,进行节点信息或属性的编辑
TIP
在预制体编辑视口中对预制体进行编辑,保存后会同步到场景中所有已引用的预制体上.
在主场景中对预制体进行编辑,不会同步到场景其他已引用的预制体上.
预制体编辑器内对根节点的Transform进行修改不会同步到主场景中.
保存预制体修改
预制体编辑视口中保存
- 点击工程内容中【保存】按钮保存对预制体的修改
中文示例 | 英文示例 |
---|---|
- 切换编辑状态及编辑对象时,点击保存提示弹窗中【保存】按钮
中文示例 | 英文示例 |
---|---|
主编辑器中保存
点击某预制体右键菜单中【更新预制体】,将当前在对象管理器中对预制体引用对象的修改保存
点击某预制体右键菜单中【另存为新预制体】,将当前在对象管理器中对预制体引用对象的修改另存为新预制体
预制体的使用
编辑状态
- 在资源库中找到需要使用的预制体,拖拽至对象管理器或主视口中创建预制体引用对象,此时预制体为网络资源,不可进行本地编辑,如果需要进行二次编辑,需要将预制体导入至本地工程内容.
中文示例 | 英文示例 |
---|---|
- 在工程内容中找到预制体,拖拽至对象管理器及主视口中创建预制体引用对象
中文示例 | 英文示例 |
---|---|
运行状态
- 通过 API 动态生成预制体引用对象
ts
/*动态生成预制体引用对象,需要本地资源库或工程内容中预制体资源ID(需要预加载资源)*/
GameObject.spawn("AssetId")
/*异步生成预制体引用对象,需要本地资源库或工程内容中预制体资源ID(无需预加载资源)*/
GameObject.asyncSpawn("AssetId")
/*动态生成预制体引用对象,需要本地资源库或工程内容中预制体资源ID(需要预加载资源)*/
GameObject.spawn("AssetId")
/*异步生成预制体引用对象,需要本地资源库或工程内容中预制体资源ID(无需预加载资源)*/
GameObject.asyncSpawn("AssetId")
预制体的删除
当工程内容中的预制体时,将校验场景中是否含有该预制体的引用对象
- 若有引用对象,则弹出弹窗
中文示例 | 英文示例 |
---|---|
删除引用对象:删除此预制体的同时,删除此预制体在场景中的引用对象
解除引用关系:删除此预制体,但保留场景中的对象,使其变为普通对象,不再依赖于原预制体文件
若没有引用对象,则显示二次确认弹窗
中文示例 | 英文示例 |
---|---|
- 删除预制体文件夹时,显示二次确认弹窗,点击确认后,将对文件夹中的所有预制体执行“删除引用对象”逻辑
中文示例 | 英文示例 |
---|---|
预制体的导入、导出
导出预制体
- 在工程内容-预制体分类下选中某预制体,点击右键菜单中【导出】按钮
- 在弹出界面内可以查看被导出的预制体及其包含的文件,可以通过勾选的方法选择需要导出文件
- 预制体引用的脚本、UI以及材质等文件会以相对应的路径被一同导出
中文示例 | 英文示例 |
---|---|
导入预制体
- 点击工程内容【资源导入】按钮,在资源管理器中选择要导入的预制体后将预制体导入
中文示例 | 英文示例 |
---|---|
导入时将解析预制体文件,并还原所有引用文件至工程中
导入时将显示导入详情面板,给开发者提供 prefab 的结构信息,可以通过文件前的勾选框来确定需要被导入的内容.
中文示例 | 英文示例 |
---|---|
- 若当前工程中的文件与导入的 prefab 有冲突,将给用户提供重命名或覆盖操作
- 覆盖:选择覆盖,导入时将导入的文件覆盖导入;并在文件右侧显示覆盖图标
- 重命名:选择重命名,导入时将导入的文件自动重命名导入
更新预制体
- 在对象管理器中,对预制体进行编辑后,使用[更新预制体]功能,会将编辑后的状态同步给其他引用的预制体,同时更新工程内容中的预制体文件.
重置预制体
- 在对象管理器中,选中预制体使用[重置预制体]功能,会将选中的预制体还原成工程内容中预制体的状态.
解除预制体
- 在对象管理器中,右键预制体头结点,提供解除预制体操作
- 该操作能够将预制体引用对象变为普通对象(紫色——白色)
使用预制体功能的注意事项与建议
使用 spawn 动态生成预制体时,需要 使用AssetUtil类去下载加载 预制体 资源,或者将预制体拖入对象管理器中的优先加载区域
使用 asyncSpawn 异步生成预制体时,无需预加载资源