Unity3D研究之Prefab里面的Prefab關聯問題


Unity研究院之Prefab和GameObject的正向和逆向查找引用

我發現很多美工兄弟都愛問程序Unity3d為什么總丟材質? 我不排除U3d有BUG的情況下會丟材質?但是其實很多時候是人為操作而引起的。

1.不保存就在上傳

這個操作太恐怖了,切記!!在 U3D里面你無論操作了什么,當你要上傳svn的時候一定要先保存場景,Ctrl+S 切記切記!!如果不保存就上傳很有可能就會丟材質。

2.我的電腦明明沒事,怎么你哪里就丟材質?

我發現一個很有意思的現象,每次走到美術電腦前看它的svn工程時,我都會發現各種的“黃嘆號”整個工程嚴重的沖突。然后程序和美術的對話就是:“這資源有用沒?沒用刪了, 我重新更新。。。” 哈哈哈 我覺得可能只有程序員才會對沖突非常敏感吧,但我覺得這件事不能怪美術,美術是很抽象的東西,不向程序要具體到少一個分號就無法進行了。

3.管理好材質貼圖

如果項目不管理好材質和貼圖,后起你會發現有很多完全一樣的圖片只是名子不一樣,但是還都在使用中。。這個很有可能是好幾個美術同時在做,這樣會造成資源的浪費。

4.特效丟材質

我舉個實際的例子,我們項目場景和特效是兩個人來做。之前總遇到場景特效莫名其妙丟材質的問題。原因就是做特效的人把特效修改了,但是做場景的又不知道,因為可能這個特效在好多場景上都在使用中。

 如下圖所示,在Preiject下面方的Prefab 如果拖入Hierarchy視圖中,它倆是具有關聯關系的,如果你直接在Project視圖中修改了Prefab那么所有Hierarchy視圖中關聯它的Prefab都會得到修改。小改動這樣是沒問題的,如果發生一些比較大的改動,那么Hierarchy視圖中Prefab可能就會丟失或者壞掉。但是假如你有很多場景都引用同一個Prefab,這么多場景會很難找到的。

Unity研究院之Prefab和GameObject的正向和逆向查找引用 - 雨松MOMO程序研究院 - 1

正向在Hierarch視圖中選擇一個prefab,然后在右側Inspector視圖中點擊Select會自動找到Project視圖中的Prefab對象。那么反向如何從Project視圖中找到Hierarchy視圖中引用的Prefab呢?

如下圖所示,Unity3d做了一個功能,在Project視圖中選擇一個Prefab,然后右鍵選擇Find References In Scene ,那么此時Unity會自動幫你在當前場景中找到Hierarchy視圖中引用這個Prefab的GameObject。

Unity研究院之Prefab和GameObject的正向和逆向查找引用 - 雨松MOMO程序研究院 - 2

但是這個方法有點局限性,就是它只能找到當前場景的,假設你的這個Prefab在很多場景中都引用了,那么這樣是找不到了,為了美術我決定寫一個小小的工具,嘿嘿。

 

 如下圖所示,我就可以找到哪個場景引用了這個Prefab。 這里我沒有用GameObject和Prefab的名子來判斷,我覺得最好也不要用名字,因為Hierarchy視圖中的名子完全可以隨意修改的,如果被改了的話就肯定找不到了,而且場景那么多完全有重名的情況。

Unity研究院之Prefab和GameObject的正向和逆向查找引用 - 雨松MOMO程序研究院 - 3

 

是不是很簡單呢?嘿嘿。

或者還有個辦法,就是運行時動態的載入Prefab,但是有些場景特效其實萬全沒有任何意義,僅僅是展示而已,程序也無需對它進行操作。

有了這個小工具,那么以后美術改完Prefab的時候,運行一下連帶的看看某些場景上是否正常的顯示了?嘿嘿嘿嘿。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM