Unity -了解预制件和实例化

在游戏过程中,实例化和销毁对象被认为非常重要.实例化只是意味着生存.项目在游戏中出现或"生成",敌人死亡,GUI元素消失,场景在游戏中一直被加载.知道如何正确摆脱不需要的物品以及如何引进你所做的那些物品变得更加重要.

让我们先了解预制件是什么.预制件被认为对于理解Instantiation在Unity中如何工作非常重要.

预制件类似于GameObject的蓝图.在某种程度上,预制件是游戏对象的副本,即使在制作场景时它不存在,也可以复制并放入场景中;换句话说,预制件可用于动态生成游戏对象.

要创建预制件,您只需将所需的GameObject从场景层次结构拖动到project Assets .

Prefabs Creation

现在,为了实例化GameObject,我们在脚本中调用 Instantiate()方法.在 MonoBehaviour 中定义的此方法将GameObject作为参数接收,因此它知道要创建/复制哪个GameObject.它还有各种覆盖,用于更改新实例化对象的变换以及父变换.

每当 Space <时,让我们尝试实例化一个新的六边形/b>键被按下.

创建一个名为 Instantiator 的新脚本并将其打开.在更新方法中,输入下面给出的代码.

在这里,我们使用 GetKeyDown 方法输入类以检查玩家是否在最后一帧期间按下了特定按钮.由于我们希望它继续检查,我们将其放入更新,每秒运行60次.如果在该帧中按下 KeyCode 枚举(列出标准键盘上所有可能的键)指定的键,则GetKeyDown方法返回 true .

public class Instantiator : MonoBehaviour {
   public GameObject Hexagon;
   // Update is called once per frame
   void Update () {
      if (Input.GetKeyDown(KeyCode.Space)) {
         Instantiate(Hexagon);
      }
   }
}

顶部的公共GameObject声明创建一个类似于我们为我们之前课程中的Rigidbody2D.这个插槽只接受预制件(在编辑器时间)和 gameObjects (在运行时).

保存脚本,然后让它编译.完成后,通过转到对象层次结构右键菜单,然后选择创建空,创建一个新的 GameObject.

Create Empty

将此对象命名为可识别的内容,例如 Instatiator Object 并附上我们的新创建的脚本.在显示GameObject的插槽中,拖动我们创建的预制件.

Instatiator Object

如果我们现在运行游戏,按空格键将创建一个新的Hexagon对象,与我们用来创建预制件的对象相同.您可以看到在对象层次结构中创建的每个六边形.你无法看到它们出现在游戏中的原因是因为目前它们都是完全一个创建的.

六角形对象

在下一课中,我们将理解对象破坏的概念.