unity中实例化预制件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyuerge/article/details/79183221


  在unity游戏中,每一场景的物体数是不同的,有的多,有的少,而且根据不同的需要,我们不可能将所有的物体,在加载的时候,就全部加载,更多的时候,我们通常只会加载镜头前方的物体。
  比如,网易荒野求生中,在人物不断奔跑的过程中,山坡上的树木,会随着你距离的减小,而不断加载出一些新的树叶或者是树枝,差不多就是这个意思,在视野范围外,unity引擎通常不会将物体全部加载,否则内存,cpu的占用,都是问题,当加载资源过多的时候会极度影响用户体验,
  这个时候,预制件就作用了,当我们不需要立刻加载这个物体的时候,我们可以将这个物体做成预制件,需要的时候,复制一份,动态加载到场景中就可以了。就像是革命一块砖,哪里需要哪里搬一样。
  比如说,如果我要做一个炮弹发射的例子,炮弹并不是所有的都加载到了场景中,通常只是加载一个大炮,炮弹是在你发射炮弹的时候,才加载的,那么这个炮弹就是被做成了预制件,在你发射炮弹的时候,动态加载炮弹,给炮弹一个速度(力),给定一个方向,炮弹就会发射,爆炸后,销毁炮弹这个物体就可以了,
  大体就是这个样子,下面上代码:

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

public class move : MonoBehaviour {

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButtonUp(0))
        {
            //克隆预制件
            GameObject obj = (GameObject)Resources.Load("Prefab/Sphere");
            //实例化预制件
            Instantiate(obj);
        }
    }
}

效果图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/liyuerge/article/details/79183221
今日推荐