unity3d prefab重要性

2015年01月30日 10:26 0 点赞 0 评论 更新于 2025-11-21 15:45

下面将为大家详细讲解Unity3D中Prefab的重要性,主要侧重于Instantiate的基本使用。需注意,个人总结不一定适用于所有同学,仅供参考学习。

一、Prefab简介

在Unity3D的项目开发中,Prefabs(预设)是极为常用的一种资源类型,它是可被重复使用的游戏对象。其主要特点如下:

  1. 多场景与多次置入:Prefab可以被放置到多个不同的场景中,也能在同一个场景里多次放置。
  2. 实例化机制:当在一个场景中添加一个Prefab时,实际上是对该Prefab进行了实例化操作。
  3. 克隆标记:所有Prefab实例都是Prefab原型的克隆体,因此在运行时生成的对象会带有(Clone)标记。
  4. 原型驱动变化:一旦Prefab原型发生改变,所有基于该原型创建的Prefab实例都会随之发生相应变化。

Prefab的主要用途在于:当需要创建一些可重复使用的元素时,就可以使用Prefab。接下来,我们将通过一个案例,使用预设在场景中创建小方块实例,以此来深入了解Prefab的使用方法。

二、案例操作步骤

1. 搭建基础场景

首先,搭建一个基础的场景,具体操作如下:

  • 创建一个地板(Plane)、一个用于下落的立方体(Cube)。
  • 调整摄像机的角度和位置,使其能够合适地观察场景。
  • 添加一个平行光源(Directional Light),以照亮场景。
  • 为立方体添加刚体属性,具体操作是:选择立方体,然后通过Component -> Physics -> Rigidbody来添加。
  • 按下键盘的E键,调整方块的角度,让其在落下时可以滚动一小段距离。搭建完成的效果可参考相应截图。

2. 创建并填充预设

Project窗口中,进行以下操作:

  • 右键点击,选择Create -> Prefab,此时新创建的Prefab显示为灰色。
  • Hierarchy窗口中将立方体(Cube)拖动到Project窗口新创建的Prefab上。完成后,Hierarchy中的立方体将变为蓝色,这表示Prefab已填充完成。
  • Project窗口中创建好的Prefab拖动到Scene窗口中,运行场景,就可以看到两个一模一样的小方块。

3. 在脚本中创建Prefab实例

接下来,我们将配合Instantiate函数,使用脚本代码创建多个Prefab实例。Instantiate函数的作用可以理解为克隆原始物体,并设置其位置和角度。如果传入一个对象、组件或脚本实例,它将克隆整个对象的层次结构以及所有子对象。具体操作过程如下:

  • Project窗口中,选择Create -> Javascript创建一个脚本。脚本代码如下:
    var CubePrefabs : GameObject;
    

function Update () { var instance:GameObject = Instantiate(CubePrefabs, transform.position, transform.rotation); // Instantiate用法说明: // CubePrefabs :用来克隆的Prefab // transform.position :脚本绑定对象的位置,类似于this.transform.position // transform.rotation :脚本绑定对象的角度,类似于this.transform.rotation }


<a id="heading-5-4--绑定脚本到对象"></a>
### 4. 绑定脚本到对象
- 完成脚本编写后,需要将其绑定到一个对象上。首先,删除`Hierarchy`窗口中的立方体。
- 创建一个空的游戏对象,操作方法是`GameObject -> Create Empty`,并将其放置到原来立方体的位置。
- 将脚本拖动到`Hierarchy`窗口中新创建的空对象上,让该对象来执行脚本代码。

<a id="heading-6-5--完成变量绑定并运行"></a>
### 5. 完成变量绑定并运行
- 在`Hierarchy`窗口中单击空对象,在其`Inspector`窗口中可以看到绑定的脚本。
- 将早前创建的Prefab(即立方体)拖动到脚本中`CubePrefabs`变量右边的框中,完成脚本中变量的绑定。
- 点击运行按钮,此时便会看到成千上万个小方块不断涌出的效果。