18.unity实例化(上)(Instantiate)

Instantiate实例化,用於将物件生成至场景中。(参考unity手册)

适合用在复制一样的物件,大量生成。这一次主要是想用实例化来生成苹果,在场中自动放很多颗苹果!!

先来看定义

//宣告建构式
public static Object Instantiate(Object original);
public static Object Instantiate(Object original, Transform parent);
public static 
Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);
  • Object original :生成物件,要复制的Object,可以是GameObject也可以是UI或其他物件。
  • Transform parent:父物件(parent),会将生成物件设定为该物件的子物件(child)。
  • bool instantiateInWorldSpace:当生成於父物件底下时,可以选择依照世界座标(true)还是父物件座标(false)生成。
  • Vector3 position:Position for the new object. 设置Position,生成於此位置座标。
  • Quaternion rotation:Orientation of the new object. 设置Rotation,生成於此旋转角度。

※没有要旋转的时候,旋转向量可以填这个:Quaternion.identity

实际例子1-生成

1.先创建好要复制的物件
1.png

2.写好脚本,挂在空物件上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InstantiateApple : MonoBehaviour
{   
    //宣告生成物件
    public GameObject apple;
    //设置三个生成位置
    Vector3 position1 = new Vector3(-1.039978f,-0.330002f,0.0f);
    Vector3 position2 = new Vector3(-0.039978f,-1.330002f,0.0f);
    Vector3 position3 = new Vector3(-0.039978f,-0.330002f,0.0f);
	//设置旋转
	Quaternion rotation1 = new Quaternion(0,0,0,0);

    void Start()
    {   
        Instantiate(apple,position1, rotation1);
        Instantiate(apple,position2, new Quaternion(0,0,0,0));
        Instantiate(apple,position3, Quaternion.identity);

    }

挂完脚本之後记得将要复制的物件拖曳进去。

3.设定好之後执行
2.png

实际例子2-整理至父物件

1.做法都一样,改脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InstantiateApple : MonoBehaviour
{   
    //宣告要生成的物件
    public GameObject apple;
    //宣告生成物件的父物件
    public Transform appleClass;
    //三个生成位置
    Vector3 position1 = new Vector3(-1.039978f,-0.330002f,0.0f);
    Vector3 position2 = new Vector3(-0.039978f,-1.330002f,0.0f);
    Vector3 position3 = new Vector3(-0.039978f,-0.330002f,0.0f);
	//设置旋转
    Quaternion rotation1 = new Quaternion(0,0,0,0);

    void Start()
    {   
        Instantiate(apple,position1, rotation1,appleClass);
        Instantiate(apple,position2, new Quaternion(0,0,0,0),appleClass);
        Instantiate(apple,position3, Quaternion.identity,appleClass);

    }
}

2.结果
3.png


<<:  Day3 安装渗透测试用的作业系统- Kali Linux 和 Parrot OS

>>:  [常见的自然语言处理技术] N-Gram Model 与关键字预测 (II)

Outlook 2007常见问题 - 整理常被问到的案件

PST档单一档案20GB 超过或将近 , 造成开启无反应或者需时很久. 解决1:scanpst 修...

从 React 开始,让你的网页material-ui起来 [Day 2] 差异性安装

如需在地端环境操作 那需要去理解 什麽是node JS 什麽是NPM 需要参照 本地安装 使用 np...

台股大跌,印证「别人恐惧,我贪婪」的时刻来了

昨天,美国国会吵得沸沸扬扬,政府要不要关门,在总统紧急签属法案後,暂时结束这场闹剧,政府继续营业,不...

JS 04 - 变数类型

大家好! 昨天我们介绍了资料的传递方式,今天就来理解变数的宣告方式吧! 我们进入今天的主题吧! 变数...

计算API所需要的参数: 内文杂凑

嗯 API 所需要的参数内文杂凑 … 依照规格说明书的指示,需要以下的流程 (1) 先移除所有空值的...