unity脚本创建物体

本文介绍了如何在Unity中使用脚本动态创建物体,包括预制体的使用、Prefab功能以及Instantiate方法的不同重载方式,如指定父物体、位置、朝向等。
摘要由CSDN通过智能技术生成

以下是关于利用unity脚本创建物体的学习记录。

在游戏场景中,当我们需要动态创建物体的时候,就可以利用脚本创建物体。

注:动态创建物体指的是在游戏或项目运行时创建物体,当结束运行时物体并不存在于场景中,因为只有在脚本运行时才会实例化对象。

1.预制体(Prefab)

        在unity中可以将预制体看成是物体的模板,它可以随时从Project面板中拖入场景中成为一个物体,但Project面板中的预制体不会减少,这样就相当于利用一个模板创建了一个物体在场景中。

 

        创建预制体:将Hierarchy面板中的物体拖拽到Project面板中即可完成创建,创建好的预制体标识和名称都会变成蓝色。而且在Inspector面板上会出现Prefab栏,Open按钮(打开预制体,可以进入预制体的编辑界面),Select按钮(选中预制体文件,可以用来定位到当前使用的预制体文件),Overrides按钮(覆盖预制体,可以用来覆盖对预制体的更新操作)。

        Open按钮:

        Select按钮:

        Overrides按钮:

        这里给预制体添加了一个BoxCollider,点击按钮后会有一个小窗提示做了哪些更改,Apply All(单独应用按钮),Revert All(撤销按钮)。

 

        编辑预制体:选中要进行编辑的预制体点击Open按钮或双击Project窗口中的预制体文件,进入预制体编辑界面,完成修改后在Hierarchy面板上点击方向向左的箭头即可回到主场景。

 

2.创建物体

        利用预制体创建物体,使用Instantiate()实例化方法,它需要引用一个预制体作为模板,返回值类型也是引用物体的类型。

        Instantiate()方法常用重载形式:

        创建一个物体和预制体并挂载脚本。

        

        2.1仅指定父物体:

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

public class CreateObjectTest : MonoBehaviour
{
    //声明一个GameObject类型的公开变量引用物体
    public GameObject Object;
     void Start()
    {
        //在场景根节点创建一个物体
        //第一个参数是将要实例化的物体,第二个参数是父物体的Transform类型
        //null表示没有父物体,创建在根节点
        GameObject object1 = Instantiate(Object, null);
    }
}

                

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

public class CreateObjectTest : MonoBehaviour
{
    //声明一个GameObject类型的公开变量引用物体
    public GameObject Object;
     void Start()
    {
        //在当前物体身上创建一个子物体
        //第一个参数是将要实例化的物体,第二个参数是父物体的Transform类型
        GameObject object2 = Instantiate(Object, transform);
    }
}

        2.2指定物体坐标和朝向

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

public class CreateObjectTest : MonoBehaviour
{
    //声明一个GameObject类型的公开变量引用物体
    public GameObject Object;
     void Start()
    {
        //指定创建物体的坐标和旋转角度Quaternion.identity表示单位旋转,物体与世界轴或父轴完全对齐
        GameObject object3 = Instantiate(Object,new Vector3(2,0,2),Quaternion.identity);
    }
}

        2.3指定物体坐标、朝向和父物体

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

public class CreateObjectTest : MonoBehaviour
{
    //声明一个GameObject类型的公开变量引用物体
    public GameObject Object;
     void Start()
    {
        //指定创建物体的坐标、旋转角度Quaternion.identity表示单位旋转,物体与世界轴或父轴完全对齐和父物体

        //第一个参数是将要实例化的物体,第二个参数是物体的位置,第三个参数是物体的朝向,第四个参数是父物体的Transform类型,
        GameObject object3 = Instantiate(Object,new Vector3(2,0,2),Quaternion.identity,transform);
    }
}

以上就是关于unity利用脚本创建组件的所有学习记录内容,如有错误还请指正。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值