【常用方法】代码动态生成预制体

预制体的好处就不提了,本篇讲述最简单的动态生成预制体的实现方法。

1.创建文件夹Resources

这点很重要,因为它只会从这里调用。所以需要在Assets工程文件夹里新建一个Resources文件夹,然后预制体可以放里面,建议在这里再建个子文件夹Prefabs,然后把预制体丢到里面。

 

2.创建预制体

把在场景中想要的生成预制体的对象拖到文件夹里,就变成了预制体。这里假设这个预制体叫“01”,被放到了“Assets-Resources-Prefabs”文件夹里。

 

3.代码调用

①一行代码的写法

    void Update()  //每帧调用
    {
        if (Input.GetKeyDown(KeyCode.Space))  //按下空格键后
        {
            GameObject.Instantiate(Resources.Load("Prefabs/01"),new Vector3(0f, 0f, 0f), Quaternion.Euler(new Vector3(0, 0, 0f)));
            //核心代码是GameObject.Instantiate(Resources.Load("Prefabs/01")),后面两个可以设置生成位置和角度,不写默认是预制体的原本位置。
        }
    }

在一个脚本里添加上述的代码方法。就可以实现按空格后在坐标原点生成一个预制体01-clone。

②更改属性写法

另一种写法就是先给个GameObject属性。

可以给它命名,而不用自动生成的01-clone,多用于需要用到物体名字的情况。代码如下:

    void Update()  //每帧调用
    {
        if (Input.GetKeyDown(KeyCode.Space))  //按下空格键后
        {
            GameObject newClone = (GameObject)Instantiate(Resources.Load("Prefabs/01"), new Vector3(0f, 0f, 0f), Quaternion.Euler(new Vector3(0, 0, 0f)));
            newClone.name = 01;//赋予预制体在场景中的名字

        }
    }

或者获取其组件,并进行更改同样可以用这个方法。

 

 

 

最后说一下删除预制体的时候调用Destory()方法,然后调用Resources.UnloadUnusedAssets释放内存

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值