Prefab概念:
Prefab是一種資源類型——存儲(chǔ)在項(xiàng)目視圖中的一種可反復(fù)使用的游戲?qū)ο?。因而?dāng)游戲中須要非常多反復(fù)使用的對(duì)象、資源等時(shí),Prefab就有了用武之地。它擁有下面特點(diǎn):
? 能夠放到多個(gè)場(chǎng)景中。也能夠在同一個(gè)場(chǎng)景中放置多次
? 當(dāng)加入一個(gè)Prefab到場(chǎng)景中,就創(chuàng)建了它的一個(gè)實(shí)例
? 全部的Prefab實(shí)例鏈接到原始Prefab,本質(zhì)上是原始Prefab的克隆。
? 不論項(xiàng)目中存在多少實(shí)例。僅僅要對(duì)Prefab進(jìn)行了改動(dòng)。全部Prefab實(shí)例都將隨之發(fā)生變化。
創(chuàng)建填充Prefab
為了創(chuàng)建一個(gè)Prefab。必須使用菜單構(gòu)造一個(gè)新的空白Prefab。不包括游戲?qū)ο?,因而不能?chuàng)建它的一個(gè)實(shí)例。
此時(shí)這個(gè)新的Prefab像一個(gè)空的container,想要使用它。必須用游戲?qū)ο蟮臄?shù)據(jù)來填充它,讓它不空。創(chuàng)建方法為Project視圖中Create-》Prefab(或?qū)Ш讲藛螚lAssets-》Create-》Prefab),此時(shí)能夠看到Project視圖多了個(gè)灰色的小立方體,它就是創(chuàng)建的Prefab。
填充Prefab非常easy。僅僅須要在Hierarchy視圖中選擇要成為Prefab的游戲?qū)ο?,然后拖?dòng)該對(duì)象到剛才創(chuàng)建的Prefab上就可以。此時(shí)能夠看見灰色的小立方體變成藍(lán)色了。此時(shí)。游戲?qū)ο蠛推淙孔訉?duì)象就已經(jīng)拷貝到了Prefab的數(shù)據(jù)中,該P(yáng)refab能夠在多個(gè)實(shí)例中反復(fù)使用。而Hierarchy視圖中的原始游戲?qū)ο笠呀?jīng)成為了該P(yáng)refab的一個(gè)實(shí)例。
假設(shè)選擇了一個(gè)Prefab實(shí)例,并希望做能夠影響全部實(shí)例的變化,點(diǎn)擊Inspector中的Selectbutton選擇源Prefab。
腳本實(shí)例化Prefab(執(zhí)行時(shí)實(shí)例化Prefab)
在執(zhí)行時(shí),通過Prefab實(shí)例化復(fù)雜的游戲物體是非常方便的。實(shí)例化Prefab的替代方法就是從一開始就使用代碼來創(chuàng)建游戲物體。而實(shí)例化Prefab比替代方法有非常多優(yōu)勢(shì):
○ 能夠用一行代碼來實(shí)例化一個(gè)具有所有同樣功能的Prefab。而用代碼創(chuàng)建等效的游戲?qū)ο髤s要花費(fèi)平均5行代碼但可能很多其它。
○ 能夠非常easy地在Scene和Inspector視圖中高速建立、測(cè)試和改動(dòng)Prefab。
○ 能夠改動(dòng)實(shí)例化的Prefab卻不須要改變實(shí)例化它的代碼。
比如,一個(gè)簡(jiǎn)單的火箭可被改動(dòng)為超級(jí)火箭,卻不須要改動(dòng)不論什么代碼。
Unity中Object類含有兩個(gè)實(shí)例化函數(shù):
[c#]static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
static Object Instantiate(Object original);
[javascript]static function Instantiate(original: Object, position: Vector3, rotation: Quaternion): Object;
static function Instantiate(original: Object): Object;
實(shí)例化函數(shù)跟編輯器中的Duplicate命令相似。
克隆游戲?qū)ο竽軌蛴羞x擇性地指定位置和旋轉(zhuǎn),默覺得Vector3.zero和Quaternion.identity。假如克隆了一個(gè)組件那么附加的游戲?qū)ο笠矔?huì)被克?。划?dāng)克隆游戲?qū)ο蠡蚪M件,全部的孩子對(duì)象和組件都會(huì)被克隆,它們的屬性集跟源對(duì)象一樣;可是克隆的新對(duì)象的父母卻是null。當(dāng)然想設(shè)置的話能夠顯示指定;克隆時(shí)游戲?qū)ο蟮臓顟B(tài)也會(huì)被克隆,因而假設(shè)源對(duì)象是inactive的話克隆出來的對(duì)象狀態(tài)也是inactive的。
能夠看看利用instantiate實(shí)例化Prefab的樣例:Instantiate應(yīng)用的4個(gè)典型小樣例。
Prefab的繼承
繼承是指任何時(shí)候當(dāng)源Prefab發(fā)生變化時(shí),這些變化將應(yīng)用于全部已鏈接到該P(yáng)refab的游戲?qū)ο蟆1热?,假設(shè)加入一個(gè)新的腳本到該P(yáng)refab。全部已鏈接到該P(yáng)refab的游戲?qū)ο蠖紝⒘ⅠR包括該腳本。
可是,改變一個(gè)單獨(dú)實(shí)例的屬性并同一時(shí)候保持鏈接完整是可能。
改變一個(gè)Prefab實(shí)例的任何屬性,能夠觀察到屬性變量名字變?yōu)榇煮w,如今該變量能夠被重寫,全部的重寫屬性不會(huì)受源Prefab變化的影響,這樣就能夠在保持Prefab鏈接不變的前提下,改動(dòng)Prefab實(shí)例使它們變得獨(dú)一無二。
假設(shè)想用新的重寫屬性值覆蓋源Prefab和全部實(shí)例,能夠在Inspector中點(diǎn)擊Applybutton。
注意,源的位置和旋轉(zhuǎn)將不被應(yīng)用。由于那樣會(huì)影響到實(shí)例的絕對(duì)位置并把全部實(shí)例放在同一位置??墒菑牟徽撌裁醋踊蚋淖嫦鹊奈恢煤托D(zhuǎn)將被應(yīng)用。由于他們是相對(duì)于根的Transform來計(jì)算的;假設(shè)想放棄對(duì)特定實(shí)例的全部覆蓋更新。能夠點(diǎn)擊Revertbutton。
破壞與恢復(fù)Prefab鏈接
某些行為能夠打破源Prefab和單個(gè)Prefab實(shí)例之間的鏈接,可是鏈接總是會(huì)被修復(fù)的。能夠打破鏈接的行為有:
○ 加入或刪除一個(gè)組件
○ 加入或刪除一個(gè)子對(duì)象
這些行為將給出鏈接打破的警告/確認(rèn)消息。假設(shè)確認(rèn)這種行為將會(huì)破壞鏈接 。
若要修復(fù)該鏈接,能夠在Prefab實(shí)例的Inspector視圖中點(diǎn)擊Reconnect或Applybutton。Reconnect將會(huì)丟棄與源Prefab的全部區(qū)別,而Apply將會(huì)將全部的區(qū)別拷貝到源Prefab中,因此全部其它的Prefab實(shí)例都會(huì)受到影響。
導(dǎo)入的Prefab
當(dāng)放置一個(gè)網(wǎng)格資源到資源目錄時(shí),Unity會(huì)自己主動(dòng)導(dǎo)入文件并生成一些類似于Prefab的網(wǎng)格。而實(shí)際上并非網(wǎng)格。僅僅是資源文件本身。
在進(jìn)行正常預(yù)置工作時(shí),資源的實(shí)例化名沒有某些限制。
資源是作為一個(gè)游戲?qū)ο笤趫?chǎng)景中被實(shí)例化的,被鏈接到源資源卻不是一個(gè)Prefab。資源作為正常的游戲?qū)ο?,能夠加入和刪除組件。然而,不能對(duì)這個(gè)資源本身做不論什么變動(dòng),由于這將給資源文件本身加入數(shù)據(jù)。假設(shè)要?jiǎng)?chuàng)建一些須要反復(fù)使用的東西。應(yīng)該將資源實(shí)例制成一個(gè)Prefab,步驟同創(chuàng)建Prefab,僅僅只是是拖拽資源文件到新建的Prefab就可以。
-
資源
+關(guān)注
關(guān)注
0文章
59瀏覽量
18403
發(fā)布評(píng)論請(qǐng)先 登錄
漢思新材料獲得芯片底部填充膠及其制備方法的專利
使用NucleiStudio 2022.1創(chuàng)建工程時(shí)沒有開發(fā)板可選擇
導(dǎo)入bsp\\allwinner\\d1或d1s出錯(cuò)怎么解決?
創(chuàng)建并發(fā)布測(cè)試版本(一)
漢思底部填充膠:提升芯片封裝可靠性的理想選擇
EXCEL導(dǎo)入—設(shè)計(jì)與思考
鋰離子電池電解質(zhì)填充工藝:技術(shù)原理與創(chuàng)新實(shí)踐
AIcube導(dǎo)入數(shù)據(jù)集,點(diǎn)創(chuàng)建項(xiàng)目,報(bào)錯(cuò)顯示“水平直方圖繪制異常”怎么解決?
KiCad 已支持導(dǎo)入 Altium 工程(Project)
漢思新材料:底部填充膠二次回爐的注意事項(xiàng)
蘋果手機(jī)應(yīng)用到底部填充膠的關(guān)鍵部位有哪些?
溝槽填充技術(shù)介紹
[Actor] 通過actor創(chuàng)建控制中心與數(shù)據(jù)采集工作站來看操作者架構(gòu)
漢思新材料HS711板卡級(jí)芯片底部填充封裝膠
芯片底部填充膠填充不飽滿或滲透困難原因分析及解決方案
prefab是什么_如何創(chuàng)建填充Prefab_Prefab的繼承及導(dǎo)入
評(píng)論