实例化对象方法 Instantiate
目前正跟随官网 Junior Programmer 课程学习。
前一段时间学习到的一些内容,将分别纪要。
1.实例化对象
使用:
1 | Instantiate (Object original, Transform parent); |
方法来实例化一个对象。
1.1描述
克隆 original 对象并返回克隆对象。
此函数会通过与编辑器中的复制命令类似的方式创建对象的副本。如果要克隆 GameObject,则可以指定其位置和旋转(否则,这些默认为原始 GameObject 的位置和旋转)。如果要克隆 Component,则也会克隆它附加到的 GameObject(同样可指定可选的位置和旋转)。
克隆 GameObject 或 Component 时,也将克隆所有子对象和组件,它们的属性设置与原始对象相同。
默认情况下,新对象的父对象 为 null;它与原始对象不”同级””。但是,仍可以使用重载方法设置父对象。如果指定了父对象但未指定位置和旋转,则使用原始对象的位置和旋转作为克隆对象的本地位置和旋转或是其世界位置和旋转(如果 instantiateInWorldSpace 参数为 true)。如果指定了位置和旋转,则使用它们作为对象在世界空间中的位置和旋转。
克隆时 GameObject 的活动状态会维持,因此,如果原始对象处于非活动状态,则克隆对象也会在非活动状态下创建。此外,对于层级视图中的对象和所有子对象,其每个 Monobehaviour 和 Component 都会仅当调用此方法时它们在层级视图中处于活动状态时,才会调用其 Awake 和 OnEnable 方法。
这些方法不会创建与新实例化对象的预制件连接。可以使用 PrefabUtility.InstantiatePrefab 创建具有预制件连接的对象。
1.2 补充说明
实际上 Instantiate 方法有多个重载,分别说明如下:
1 | public static Object Instantiate (Object original); |
参数说明如下:
| 参数 | 说明 |
|---|---|
| original | 要复制的现有对象。 |
| position | 新对象的位置。 |
| rotation | 新对象的方向。 |
| parent | 将指定给新对象的父对象。 |
| instantiateInWorldSpace | 分配父对象时,传递 true 可直接在世界空间中定位新对象。传递 false 可相对于其新父项来设置对象的位置。 |
以上。
2.示例
以下:
1 | // 实例化10个 prefab,每个间距2单位 |
实例化可以用于在运行时创建新对象。示例包括:用于飞弹的对象或是用于爆炸特效的粒子系统。
1 | using UnityEngine; |
Instantiate 也可以直接克隆脚本实例。 将克隆整个游戏对象层级视图,并返回克隆的脚本实例。
1 | using UnityEngine; |
克隆对象后,您还可以使用 GetComponent 设置附加到克隆对象的特定组件的属性。
注
上述描述来源于 Unity Document,以下路径:
以上。