理解预制体和实例化17 Mar 2025 | 阅读 2 分钟 在任何游戏中,实例化和销毁角色或对象都是非常常见的操作。实例化意味着将对象引入存在。在游戏中,对象出现或生成,敌人死亡,GUI 元素消失,并且场景一直被加载。 当您想要在运行时实例化复杂的 GameObject 或 GameObject 集合时,预制体非常有用。与使用代码从头开始创建 GameObject 相比,使用代码实例化预制体更好,并且它具有许多优点。 让我们了解什么是预制体;因为预制体被认为是理解 Unity 中实例化工作原理的重要组成部分。 预制体就像 GameObject 的蓝图。所以我们可以说,预制体是 GameObject 的副本,可以被复制并放入场景中,即使在制作场景时它不存在;换句话说,预制体可以用于动态生成 GameObject。 让我们创建一个预制体;为此,您需要将所需的 GameObject 从场景层级拖到项目资源中。 ![]() 现在,要实例化 GameObject,我们在脚本中调用 Instantiate() 方法。此方法在 MonoBehaviour 中可用,并接收一个 GameObject 作为参数,因此它知道要创建或复制哪个 GameObject。它还具有不同的重载,用于更改新实例化对象的变换以及父级。 现在创建一个名为 Instantiator.cs 的新脚本,并将以下代码复制到其中。 在上面的程序中,我们使用了 Input 类的 GetKeyDown 方法来检查玩家是否在最后一帧按下了特定的按钮。如果 KeyCode 枚举(用于列出标准键盘上所有可能的键)指定的键在该帧中被按下,则 GetKeyDown() 方法返回 true。 保存脚本。现在,通过在层级选项卡中右键单击场景来创建一个空 GameObject。 ![]() 从检查器选项卡将该脚本文件 (Instantiator.cs) 附加到新创建的 GameObject 的组件。 现在,在 Diamond 变量中拖动我们创建的预制体。 ![]() 现在运行游戏时,按空格键将创建一个新的 Diamond 对象,该对象与我们用于创建预制体的对象相同。您可以看到每个钻石都创建在对象层级中。您无法在游戏中看到它们的原因是,目前,它们都在彼此之上创建。但是您可以从“层级”选项卡验证它。每次按空格键时,它都会在选项卡中显示为 Diamond (clone)。 ![]() 下一主题GameObject 销毁 |
我们请求您订阅我们的新闻通讯以获取最新更新。