Unity3D學習筆記之三Prefab組件的使用

本次教程,我們來創建一個簡單的Prefab組件。
教程參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》。

說到Prefab,中文翻譯為預設體,在Unity官方的書本《Unity4.X從入門到精通》中的解釋是:可以理解為是一個游戲對象及其組件的集合,目的是使游戲對象及資源能夠被重復使用。相同的對象可以通過一個預設體來創建,此過程可理解為實例化。
? ? ?存儲在項目文件中(Project視圖)的狀態時,預設體作為一個資源,可應用在一個項目中的不同場景中。當拖動預設體到場景中就會創建一個實例。該實例與其原始預設體的有關聯的,對預設體進行更改,實例會同步修改。Prefab可以提升資源的利用率和開發的效率。
? ? ?好比某個Prefab是我們創建好的一個標準的房間模型,當我們在場景中需要建立另一個房間的時候,不需要我們再手動的將地板,墻,天花板拼接,而是可以直接拖一個Prefab到Scene視圖中,并對這個Prefab進行修改就可以了。

? ? ?下面開始創建我們的Prefab組件。接上一篇教程,現在我們場景內,有三個沒有吻合的模型。如下圖:
接下來我們把分別單擊選中這三部分,并在Inspector視圖中,找到Position,將他們的XYZ坐標都修改為0,0,0,
我們會發現模型會變為下圖這樣。

我們發現MineShaft_Wall中心在墻的中間,所以我們要修改下他的Y坐標。選中墻壁模型,將MineShaft_Wall墻壁模
型的Y坐標改為3就可以了,事實上這個模型墻壁高度為6個單位。
? ? ?這里要注意一下,如果你要單方向移動一個模型,即保持其他兩個坐標值不變只改變一個坐標值,那么你就要按
住坐標系三個方向其中的一個并拖動就可以了。

接下來我們要做的是把現在位于中間的墻壁,移動到一側,并復制幾面墻移動到四周。直接拖動或者修改坐標可能
會產生各種誤差,這里我們采用頂點捕捉(Vertex Snapping)。
? ? ? 我們首先選中我們要移動的物體,然后按下V,我們會發現當我們移動鼠標的時候坐標軸會只在模型中的頂點
停留。如下圖,當你們鼠標挪到左下角的時候,會在左下方的定點出現坐標軸。
這時我們可以單擊鼠標,選中這個頂點坐標軸處的正方形區域(如圖中的黃色小正方形),拖動這個模型,可以讓
這個頂點與下面我們鼠標挪到的另一個頂點結合。如下圖,我選中這個頂點后,將其拖動至地板左下角的頂點上,
讓這兩個頂點相合。這是一個快捷的移動模型的方法。

接下來我們要借用這一面墻復制出另一面墻,并移動位置。我們選中我們剛移動的這面墻體,按下Ctrl+D(Mac下為
Command+D)來復制一下,我們會在Hierarchy視圖下發現多了一個MineShaft_Wall,然后我們采取剛才同樣的方
法,按下V,選取墻體的左下角坐標軸,拖到地板的右下角頂點,我們剛才復制的墻體就到已有墻體的對面。但是
我們前面提到過,我們的墻體不從正面看是看不到的,平移后我們相當于看到的是墻體的另一面,所以這里才會只
有一個坐標系而沒有墻。如果我們稍微向右再挪動一點兒視角,就會看到我們復制出來的這面墻。
如下圖:

圖一:未挪動視角
圖二:挪動視角


我們要做的是把這面墻體旋轉180度。選中這面墻,按下E,激活Rotate工具,坐標軸會發生如下變化:

這里我們按住綠色線確保Y軸角度不便,然后按住CTRL(Mac下按住Command)逆時針方向一直拖動,按住CTRL
是以15度為單位來旋轉,旋轉后我們會發現Inspector視圖中,Y角度變成了-180(有時會是179.99),當然也可以
直接在Inspector視圖額Rotation里面直接修改角度,要確保你修改的坐標軸是正確的。旋轉完成后按W回歸原始坐
標系。

?現在我們開始將這個模型放入一個Prefab組件中。先在Project視圖內,ImportedAssets文件夾內新建Prefabs文件
夾,專門用來放置我們的預設體。
然后進入Prefabs文件夾,右鍵,Create,Prefab,將新建的空的Prefab命名為PFB_Straight。

下面我們將視線移動到Hierarchy視圖中,我們可以看到四個藍色名稱,藍色名稱表明該物體是預設體或者從文件中
拖入到場景內的。現在要把物體放入Prefab中,我們可以發現當這些物體全部選中后是無法拖進我們新建的Prefab
中的。這里我們需要在Hierarchy中創建一個空的游戲物體------菜單欄,GameObject,Create Empty,這樣Hierarchy
中會多出一個空的GameObject。我們對其命名為PFB_Straight,沒錯,和我們的Prefab名字相對應,并且現在這個
object的名稱是白色的。下面我們來為此object與我們的四個物體建立父子關系,并將其導入到Prefab中。

選中全部四個物體,然后拖動到PFB_Straight中,會形成如圖一的父子關系,接下來選中PFB_Straight,并拖入到
Project視圖中我們新建的Prefab中,就完成了Prefab的初步創建,如圖二。
? ? ?圖二中,Hierarchy中物體全部變為藍色,而且我們的Prefab在界面右下角有了預覽,我們可以在預覽中用鼠標
拖動來查看Prefab的內容。

圖一:

圖二:


至此,一個很簡單的Prefab就創建好了,下面我們將這個組件拖入到場景中,我們會發現我們已經可以將我們之前
創建的組件很簡單的假如場景中。這就是Prefab的優點,大大提高了工作的效率。
我們現在可以選中一個組件,按住V,并利用前面提到過的頂點捕捉(Vertex Snapping)來建立一個長長的隧道。
注意要選中整個組件,而不是組件的一部分,不要只把地板或者墻壁移動了,如果移動錯了,記得按CTRL
(Command)+Z來取消操作。大家可以來試試創建一個隧道。



2015.1.1? ? ?0:03
By Mr.Losers



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277681.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277681.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277681.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript之閉包

不少開發人員總是搞不清匿名函數和閉包這兩個概念,因此經常混用。閉包是指有權訪問另一個函數作用域中的變量的函數。創建閉包的常見方式,就是在一個函數內部創建另一個函數 --《JavaScript高級程序設計》 轉載于:https://www.cnblogs.com/songsongblue/…

【躍遷之路】【522天】程序員高效學習方法論探索系列(實驗階段279-2018.07.12)...

(躍遷之路)專欄 【躍遷之路】獎勵金計劃正式開始 從2018.7.1起,【躍遷之路】獎勵金計劃正式起航,從今以后,每月1日,我會將自己個人上月收入的1%計入【躍遷之路】獎勵金池,積累到足夠金額后,將適時用于獎勵那…

迷茫在路口——致我的2014

今天是2015年一月一日,2014年已經過去了。這意味著再過六個月整,我就要大學畢業,開始為自己的未來拼搏。這一年,我過的充實且迷茫。說2014充實,是因為我從寒假結束到有一個寒假的到來,幾乎沒有怎么閑下來&a…

Codeforces 173E Camping Groups 線段樹

Camping Groups 我們先計算出&#xff0c; 每個點當leader所能掌控的最多人數。 然后我們把詢問離線&#xff0c; 丟到responsibility最大的那個地方去。 然后從大到小往線段樹里加人&#xff0c; 加入完之后處理掉當前的詢問。 如果強制在線的話就只能樹套樹啦。 #include<…

tomcat閃退解決方案

在這幾天&#xff0c;遇到一個Tomcat啟動閃退的問題&#xff0c;通過查閱各種資料&#xff0c;算是完美解決。在此分享給朋友們。 首先&#xff0c;確定你的問題在哪里 1.查詢錯誤&#xff1a;winR 輸入cmd&#xff0c;進入一般處理程序。通過cd 找到你Tomcat的bin文件夾&#…

《古劍奇譚2》詳細測評心得

期待已久的《古劍奇譚2》。仔仔細細的玩下來給我的感覺還是不錯的。燭龍也不愧是國產單機的良心公司了&#xff0c;回合制的戰斗方式改成了即時戰斗類。 的確&#xff0c;國產動作類的游戲經驗目前等于零。《古劍2》一改以往國產網游的作風跳出了回合制的圈子實屬不易&#xff…

LeetCode 581. 最短無序連續子數組(Shortest Unsorted Continuous Subarray)

581. 最短無序連續子數組581. Shortest Unsorted Continuous Subarray 題目描述 給定一個整型數組&#xff0c;你需要尋找一個連續的子數組&#xff0c;如果對這個子數組進行升序排序&#xff0c;那么整個數組都會變為升序排序。 你找到的子數組應是最短的&#xff0c;請輸出它…

NFS4文件鎖機制探秘

2019獨角獸企業重金招聘Python工程師標準>>> 簡介 NFS4實現“租賃鎖”。每個鎖擁有一樣的“租賃期”。客戶端的讀寫操作將刷新“租賃期”。租賃期到期后&#xff0c;鎖將被服務器釋放。NFS4通過下述“模型”實現對鎖的管理&#xff1a; 1) 清晰地劃分客戶端和服務器…

Stay Hungry Stay Foolish——網絡學習平臺分享

從1月24號回家也有一陣子了&#xff0c;今天已經是31號&#xff0c;這一個周的中心思想就是一個字&#xff0c;玩。 學生一但遠離學校&#xff0c;就會碰到許多學習的阻力&#xff0c;有來自外界的&#xff0c;家里有活要干&#xff0c;有親戚要訪&#xff0c;有同學邀約&…

linux_check

linux_check echo "********CPU****************" echo 總核數 物理CPU個數 X 每顆物理CPU的核數 echo " 總邏輯CPU數 物理CPU個數 X 每顆物理CPU的核數 X 超線程數"echo 查看物理CPU個數 cat /proc/cpuinfo| grep "physical id"| sort| un…

Unity3D學習筆記之四完善Prefab并添加First Person Controller

好久沒學東西并用博客記錄了&#xff0c;這個年過的很懶散&#xff0c;慢慢臨近開學了&#xff0c;也要提前適應一下&#xff0c;寫寫東西&#xff0c;這樣開學才能更好的進入狀態呀&#xff5e;&#xff5e;本次筆記中&#xff0c;我們將來雕琢一個更加完善的Prefab&#xff0…

高精度(壓位+判負數+加減乘+讀寫)

本算法目前屬于還處于測試狀態&#xff0c;歡迎Hack&#xff01; struct gj{bool fu; //是否是負數int tt,mod; //高精的長度int s[40005]; //壓位用的數組inline gj(){ //整體初始化fu0; tt0; mod1e9;memset(s,0,sizeof(s));}inline gj read(){ register char ch; //高精度讀…

Hadoop從安裝Linux到搭建集群環境

簡介與環境準備  hadoop的核心是分布式文件系統HDFS以及批處理計算MapReduce。近年&#xff0c;隨著大數據、云計算、物聯網的興起&#xff0c;也極大的吸引了我的興趣&#xff0c;看了網上很多文章&#xff0c;感覺還是云里霧里&#xff0c;很多不必要的配置都在入門教程出現…

git推送本地分支到遠程分支

場景 有時候我們開發需要開一個分支,這樣可以有效的并行開發. 開分支有兩種方式: 一種是在遠程開好分支,本地直接拉下來;一種是本地開好分支,推送到遠程.遠程先開好分支然后拉到本地 git checkout -b feature-branch origin/feature-branch //檢出遠程的feature-branch分支到…

delphi 函數內創建對象 釋放_JavaScript 的函數底層運行機制

▲ 點擊上方藍字關注我 ▲文 / 景朝霞來源公號 / 朝霞的光影筆記ID / zhaoxiajingjing圖 / 自己畫目錄0 / 題(1)第一題(2)第二題1 / 引用數據類型&#xff1a;object2 / 引用數據類型&#xff1a;function(1)第二題&#xff0c;簡圖(2)創建函數(3)執行函數(4)閉包3 / 練習題(1)…

Unity3D學習筆記之五為Prefab添加材質

本次筆記中&#xff0c;我們將利用unity來創建并使用材質&#xff0c;把材質添加到我們的Prefab中去。這一系列教程以及素材均參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》&#xff0c;下載鏈接附在第二篇學習筆記中。繼續上次筆記中所記錄的東西&a…

分布式版本控制系統之Git

Git Git 是目前世界上最先進的分布式版本控制系統&#xff08;沒有之一&#xff09;作用 源代碼管理為什么要進行源代碼管理? 方便多人協同開發方便版本控制Git的誕生 作者是 Linux 之父&#xff1a;Linus Benedict Torvalds當初開發 Git 僅僅是為了輔助 Linux 內核的開發&…

oo第三次博客-JML規格

這三周的作業主要是圍繞以JML來約束代碼開發&#xff0c;以確保程序的正確性與魯棒性。 Part 1&#xff1a;三次作業的實現與bug 第一次作業沒有任何算法和數據結構上的難度&#xff0c;對于Path和PathContainer的各個方法的實現按照給出的規格復讀即可。唯一的難點&#xff08…

Kinect開發筆記之一Kinect詳細介紹

畢業設計的課題我選擇了結合Kinect和Unity3D開發體感游戲&#xff0c;這是我十分感興趣的一個課題&#xff0c;所以做好當然責無旁貸。準備再寫一系列Kinect的學習筆記&#xff0c;記錄自己畢設一步一個腳印的歷程。1、Kinect背景介紹眾所周知&#xff0c;Kinect是一款集成了很…

獲取2個地址之間的距離(高德API)

2019獨角獸企業重金招聘Python工程師標準>>> string startLonLat SiteHelper.GetLonLat("大連"); //獲取起始地經度緯度 string endLonLat SiteHelper.GetLonLat("沈陽"); //獲取目的地經度緯度 int distance SiteHelper.GetDistance(star…