李青松 廊坊師範學院資訊科技提高班 十三期
阿新 • • 發佈:2019-01-28
在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);
}
}
}
效果圖: