从脚本基于预制件创建对象

更新页 :
页面创建日期 :

验证环境

窗户
  • 视窗 11
统一编辑器
  • 2021.3.3f1
输入系统包
  • 1.3.0

此提示的先决条件

作为此提示描述的前提,已预先进行了以下设置。

基于脚本中的预制件创建对象

前面的提示中,我们将对象从预制件放置到视图中,但在这种情况下,我们放置了预定数量的对象并启动游戏。 但是,某些游戏可能希望在游戏运行时动态添加对象。 在这种情况下,您必须从脚本中的预制件添加它。

样品创建

部署新项目后,放置按钮。 让我们尝试在每次单击按钮时从预制件生成一个对象。

创建预制件。 此过程与前面的提示相同

创建一个脚本,以便在下次单击该按钮时添加对象。 ButtonEvent 将名称保留为 。

using UnityEngine;

public class ButtonEvent : MonoBehaviour
{
  [SerializeField] private GameObject SpritePrefab;

  public void OnClick()
  {
    // Instantiate にプレハブを渡すとそれをもとに新しいオブジェクトを生成する
    var obj = Instantiate(SpritePrefab);

    // 配置位置はランダムに
    obj.transform.localPosition = new Vector3(Random.value * 6 - 3, Random.value * 6 - 3);
  }
}

GameObject定义字段,以便您可以提前设置要基于哪个预制件生成。

Instantiate 您可以传递一个方法来基于该对象创建新 GameObject 对象。

创建对象的位置成为原点,无论创建多少对象,对象重叠且难以理解,因此创建后随机设置位置。 位置调整值是合适的,因为它是一个样本。

将脚本附加到事件系统。

GameObject 已设置,因此将预制件拖放到此处。

单击按钮时,将 OnClick 调用该方法。

示例执行

创建后,运行游戏并单击按钮。 每次单击都应生成一个对象。

当然,由于它是基于预制件生成的,如果预制件的值发生变化,生成的对象将根据该值生成。