提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
前言
博主剛學(xué)習(xí)unity的時候,在網(wǎng)上找預(yù)制體相關(guān)的博客,可是很難找到一篇凝練且通俗易懂介紹預(yù)制體的文章,浪費了不少時間且難以理解一些文章的內(nèi)容。自己摸索學(xué)習(xí)了一段時間過后,總算對預(yù)制體有了一定的了解,現(xiàn)在本篇文章將凝練的講一講unity中的預(yù)制體及其實例化。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、預(yù)制體(Prefab)是什么?
1.1預(yù)制體簡介
大家平時點的外賣,其菜品很多就是通過預(yù)制菜制作的,預(yù)制菜的主要特點是規(guī)格統(tǒng)一且經(jīng)過簡單加工即可制成成品。我們可以把現(xiàn)實中的預(yù)制菜比作unity中的預(yù)制體,廚師加工預(yù)制菜的過程就是預(yù)制體實例化的過程,這里的廚師其實就是instantiate函數(shù),通過函數(shù)將預(yù)制體實例化。廚師用預(yù)制菜制作出了一道成品菜,就是instantiate函數(shù)實例化了一個預(yù)制體,將該預(yù)制體呈現(xiàn)在場景中。
1.2預(yù)制體是什么樣子的?
預(yù)制體可以有多種元素組合而成,所謂的元素一般是游戲素材,比如圖片,模型等,將所有的元素打包成一個物體,這個物體就是所謂的預(yù)制體。
如圖樣例就是一個命名為【GameObject】的預(yù)制體,它包括了場景中出現(xiàn)的所有元素(房子,馬路,樹木,柵欄,草叢),函數(shù)實例化該預(yù)制體后,游戲場景中就會一齊出現(xiàn)房子馬路等元素的一個集合。
1.3預(yù)制體作用與用途
在一個游戲項目中,場景可能就是由許多個預(yù)制體拼湊而成,每個預(yù)制體組成了場景中的一點部分元素,比如要制作一個無限大的地圖,通常游戲就會設(shè)置當(dāng)主視角接近場景邊界的時候,就往外隨機生成一個預(yù)制體場景,這樣就能實現(xiàn)無限大地圖的效果。預(yù)制體的使用就會大大方便對地圖元素的管理。
如果你要制作一把游戲槍械,當(dāng)槍械激發(fā)時你想做出一顆顆子彈出槍膛的效果,那么子彈也可以做成一種預(yù)制體,不斷在槍口實例化,且實例化之后沿著槍口方向移動。
二、制作一個預(yù)制體
2.1制作預(yù)制體示例
我們首先將素材拖入場景界面,可以根據(jù)你對游戲場景的設(shè)計,擺出你希望的預(yù)制體的樣子,你所設(shè)計的樣子,就是以后預(yù)制體實例化的樣子。
然后我們創(chuàng)建一個空的物體,將我們所添加的元素全部并入到該空物體,成為其子項。
最后,我們將【GameObject】拖入到Project的一個文件夾,至此,一個預(yù)制體就制作完成了。以后要使用該預(yù)制體的時候,我們就可以從Project中實例化該預(yù)制體。保存好之后就可以把場景【Hierarchy】里面的【GameObject】刪去了,保存【Project】里面的源預(yù)制體即可,因為我們實例化調(diào)用的是項目里面的源預(yù)制體。
2.2預(yù)制體實例化
要實例化一個預(yù)制體,我們首先要代碼獲取到源預(yù)制體,然后在通過Instantiate函數(shù)將獲得的源預(yù)制體實例化。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
//預(yù)制體是用GameObject類型
public GameObject prefab;
}
我們可以通過pubic來獲取外部的源預(yù)制體,pubic可以在編輯器界面生成一個面板窗口,隨后將源預(yù)制體拖放到【Test】腳本下的【Prefab】窗口。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public GameObject prefab;
private void Start()
{
Instantiate(prefab);
}
}
在腳本中加上Instantiate(prefab),保存代碼返回編輯器中點擊play運行,即可簡單的將預(yù)制體實例化,生成剛剛所設(shè)計的場景在游戲中。文章來源:http://www.zghlxwxcb.cn/news/detail-780963.html
總結(jié)
本文只是簡單的介紹了Instantiate函數(shù)的最簡單用法,Instantiate函數(shù)還可以設(shè)置更多參數(shù),比如初始化預(yù)制體的位置,旋轉(zhuǎn)角度等,比如文章來源地址http://www.zghlxwxcb.cn/news/detail-780963.html
Instantiate(prefab, new Vector3(0,0,0), Quaternion.identity);
到了這里,關(guān)于Unity快速入門教程-詳解預(yù)制體(Prefab)及其實例化Instantiate的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!