目录
A. 简介
在 Unity 中,预制件(Prefab)是一种非常强大且实用的功能。
定义:
预制件是一个可重复使用的游戏对象模板。它包含了游戏对象及其组件的完整配置。
作用:
- 提高效率:创建一次,多次复用。例如,在一个射击游戏中,同类型的敌人可以创建为一个预制件,无需为每个敌人单独设置属性和组件。
- 批量修改:对预制件进行修改,所有基于该预制件生成的实例都会同步更新。比如,修改了敌人预制件的属性,游戏中所有的该类敌人都会相应改变。
- 便于管理:将相关的游戏对象组合成预制件,方便组织和管理项目资源。
B. 创建预制体
将一个游戏对象从 Hierarchy 窗口拖入 Project 窗口。创建预制件资源的这一过程也会将原始游戏对象转换为预制件实例。该对象现在将成为新创建的预制件资源的实例。预制件实例以蓝色文本显示在 Hierarchy 窗口中.
C. 实例化预制体
预制件资源从 Project 视图拖动到 Hierarchy 或 Scene 视图,在 Editor 中创建预制件资源的实例。
通过代码实例化预制体:
通常使用 Instantiate
方法来实现。以下是一个 C# 示例代码:
using UnityEngine;
public class PrefabInstantiation : MonoBehaviour
{
public GameObject prefab;
void Start()
{
Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity);
}
}
在上述代码中,首先需要有一个对预制体的引用 prefab
,然后在 Start
方法中使用 Instantiate
方法来实例化预制体,并指定其位置和旋转。
D. 编辑预制体,覆盖
双击预制体
在这里做的修改会默认发生在所有预制体实例上(前提是预制体实例没有个性化设置)
比如:
实例化三个预制体实例
现在BoxCollider组件都是打开的.
然后打开预制体,关闭这个组件
在返回场景,这些实例的组件都被关闭了
如果我手动打开一个.
在控制预制体的这个组件开关,就和这个对象上面的这个组件没关系了.
覆盖
点击应用所有
就会发现所有的预制体实例都发生了变化
修改的多了,但只需要部分覆盖,就选择需要覆盖的改变.
也可以在修改的组件上选择
E. 预制体变体
在 Unity 中,预制体变体(Prefab Variant)是基于原始预制体创建的一种特殊类型的预制体。
特点和作用:
- 继承性:预制体变体继承了原始预制体的大部分属性和组件,但可以有一些独特的修改。
- 灵活性:允许在保留原始预制体结构的基础上进行局部调整,以满足特定的需求。
创建预制体变体:
在项目视图中,选中原始预制体,然后通过右键菜单选择“Create > Prefab Variant”来创建一个变体。
应用场景:
- 角色定制:比如有一个基础的角色预制体,通过创建变体可以实现不同服装、发型等外观上的变化。
- 道具变化:对于同一种道具,创建变体来表示不同的颜色、尺寸或功能上的细微差异。
优势:
- 减少重复工作:无需为每个稍有不同的对象重新创建整个预制体。
- 保持关联:与原始预制体仍有一定的关联,方便进行统一管理和更新。
例如,在一个赛车游戏中,有一款基本车型的预制体,通过创建变体可以得到不同颜色的同款车型,或者是配备了不同性能配件的版本。
优先级:
预制体 > 预制体变体
F. 解除预制体实例
在层级页面,右键预制体实例,选择预制体 - 完全解压缩,就可以变为不同物体.
PS:预制体变体选择解压缩,可以变为预制体实例,而不是预制体变体实例.