实例化和销毁角色或对象在任何游戏中都很常见。实例化意味着使对象存在。在游戏中出现或生成对象, 敌人死亡, GUI元素消失以及场景始终在游戏中加载。
当你要在运行时实例化复杂的GameObject或GameObject的集合时, 预制件非常有用。与使用代码从头开始创建GameObjects相比, 使用代码实例化预制件更好, 并且具有许多优点。
让我们了解什么是预制件。因为预制对于理解实例化在Unity中的工作原理很重要。
预制件就像GameObject的蓝图。因此, 可以说, 预制件是GameObject的副本, 可以复制并放入场景中, 即使在创建场景时不存在它。换句话说, 可以使用预制件动态生成GameObject。
【Unity预制件和实例化解释和示例】让我们创建一个预制件;为此, 你需要将所需的GameObject从场景层次结构拖到项目Assets中。
文章图片
现在, 要实例化GameObject, 我们在脚本中调用Instantiate()方法。 MonoBehaviour中提供了此方法, 该方法将GameObject作为参数, 因此它知道要创建或复制哪个GameObject。对于更改新实例化的对象的变换以及育儿, 它也具有不同的替代。
现在, 创建一个名为Instantiator.cs的新脚本, 并在其中复制以下代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Instantiator : MonoBehaviour
{
public GameObject Diamond;
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(Diamond);
}
}
}
在上面的程序中, 我们使用Input类的GetKeyDown方法来检查玩家是否在最后一帧期间按下了特定按钮。如果在该帧中按下了由KeyCode枚举指定的键(用于列出标准键盘上所有可能的键), 则GetKeyDown()方法将返回true。
保存脚本。现在, 通过在” 层次结构” 选项卡上右键单击场景, 创建一个空的GameObject。
文章图片
从” 检查器” 选项卡将该脚本文件(Instantiator.cs)附加到新创建的GameObject的组件。
现在, 在我们创建的预制变量” Diamond” 变量中。
文章图片
现在运行游戏时, 按空格键将创建一个新的Diamond对象, 该对象与我们用来创建预制件的对象相同。你可以看到在对象层次结构中创建了每个菱形。你看不到它们出现在游戏中的原因是, 暂时而言, 它们都是完全相互创建的。但是你可以从” 层次结构” 选项卡进行验证。每次按空格键时, 空格键都会在选项卡中显示为菱形(克隆)。
文章图片
推荐阅读
- Unity GameObject销毁介绍和用法示例
- 了解Unity的碰撞(详细介绍图解)
- c#开发移动APP-Xamarin入门剖析
- c#开发移动APP-Xamarin入门扩展
- c#开发移动APP-Xamarin入门扩展剖析
- Appium 1.9.1 启动报错 Fatal TypeError: Class constructor BaseDriver cannot be invoked without 'new&#
- Gradle自动实现Android组件化模块构建
- android完成注册页面的下拉框及单复选框
- 9Collaborative Metric Learning Recommendation System:Application to Theatrical Movie Releases----