標籤:
解釋:Prefabs(預設)是一種資源類型,可被重複使用的遊戲對象。它可以被置入多個情境中,又或者能夠在一個情境中被多次置入。當你在一個情境中增加一個Prefabs,你就執行個體化了一個Prefabs。所有Prefabs執行個體都是Prefab的複製,只要Prefabs原型發生改變,所有的Prefabs執行個體都會產生變化。
Prefabs的用法:如果大家要建立一些想要重複使用的東西,那麼就該用到它了。
接下來我們寫個小例子,看看如何使用它
1 搭建如下情境:一個地板,一個下落的立方體,調整攝像機的角度和位置,加個平行光,位置參考的Scene視窗,效果如Game視窗展示的那樣。同時給立方體加上剛體屬性(Component -> Physics -> Rigidbody)
然後調整一下立方體的角度,運行一下,讓它滾一下。
2 建立Prefabs
在Preject視窗,點Create-> Prefab。然後我們從Hierarchy視窗中將立方體拖到Project視窗新建立的Prefab上。當Hierarchy中的立方體變成了藍色,Prefabs就完成了填充。
然後你從Preject視窗中將建立的Prefabs拖入Scene視窗中,運行一下。就完成了一次複製。它們就像雙胞胎一樣。
3 接著我們配合Instantiate,來用代碼建立多個Prefabs的執行個體。
Instantiate:複製原始物體。設定位置,角度。如果一個對象,組件,指令碼執行個體被傳入。將複製整個對相愛難過的層次,以及所有子物件。
各位同學,讓我們在Project視窗點Create -> Javascript建立一個指令碼
我發現可以用as3的寫法來寫這裡面的js,各位同學請看
public var Pre:GameObject;//在編輯器中用來綁定的Prefabs
private function Update ():void
{
varinstance:GameObject=Instantiate(Pre,transform.position,transform.rotation);
//Instantiate用法,注意參數
//Pre 用來複製的Prefabs
//transform.position 指令碼綁定對象的位置就像this.transform….
//transform.rotation 指令碼綁定對象的角度就像this.transform….
}
是不是有很親切的感覺?
4寫完指令碼,我們要把它綁定到一個對象上。這時候,我們可以刪除Hierarchy視窗中的立方體,然後建立一個空的遊戲對象(GameObject->CreateEmpty),放置到原來立方體的位置上。將指令碼拖放到Hierarchy視窗中的新鍵的Null 物件上,讓它來執行代碼。
5在Hierarchy視窗中單擊Null 物件,在它的Inspector視窗中就能看到綁定的指令碼。然後我們把早前建立的Prefabs拖到指令碼Pre右邊的框上,完成了指令碼中變數的綁定。
6 按小三角運行一下,搞的像粒子效果一樣,是不是很嗨?
出自blog: http://blog.sina.com.cn/s/blog_82b6aa3d0100w8sx.html
[轉]Prefabs(預設)與 Instantiate(執行個體化)