2016年1月12日 星期二

Unity:場景物件數量的影響(二)

在上一篇「Unity:場景物件數量的影響(一)」,最後有提到使用一個模型資源或一個 Prefab 所建立的場景「所佔容量最小」的這一結果並不可靠,所以,針對這兩種方式所建立的場景重新測試,並且來看看與上次的其他三種方式所建立的場景之間的容量差異。


影片網址:https://youtu.be/TTW7EP9QUG0

如果,在上次發佈的實驗數據裡,直接只看結果而沒有詳閱文章後面的說明,可能會直接下判斷認為使用一個 Prefab 所建立的場景,所佔的容量最小,而且,會比使用多個 Prefab 組合起來的場景所佔容量小很多,但事實卻未必是這樣。

在上次的實驗中,對於五種不同場景的做法,是採用同樣的流程,也就是建立好一個場景後,直接複製 100 個來輸出比較,可是,其中有一個盲點,對直接在場景建立模型的場景來說,複製 100 個場景之後,這些場景中的模型彼此並沒有任何關係,所以,可以視為有 100 份不同的場景資料是很正常的,而使用多個模型資源和多個 Prefab 組合的場景,因為是組合起來的,所以,各場景之間的資源會重複使用到也是很正常的。

但是,使用一個模型資源或一個 Prefab 所建立的場景,直接複製 100 個場景,代表 100 個場景共用了相同的模型資源或 Prefab,因此,這樣測試出來的數據,其實,沒什麼意義。

因為,在真實開發的專案中,如果整個場景是由單一個模型或 Prefab 所建立起來的話,不太可能 100 個場景都共用相同的模型資源或 Prefab,因此,這部分就必須使用個別不同的方式來建立 100 個場景,才能得到較正確的結果。

所以,改成使用以下方式來建立場景:
  • 使用一個模型資源所建立的場景,改成先將場景所使用的模型資源複製 100 份,並在 100 個場景中個別使用不同的模型資源。
  • 使用一個 Prefab 所建立的場景,則改為先將 Prefab 複製 100 份,並使它們個別使用不同的模型,最後,在 100 個場景中,個別使用不同的 Prefab 來建立場景主體。
如此,兩種做法所使用的 100 個場景,將完全不會重複使用到相同的模型資源及 Prefab。



以下是 Build 的結果:

電腦桌機 Mac OS X 的 App


使用一個模型資源建立的場景
使用一個 Prefab 建立的場景

安裝到 iOS 裝置


使用一個模型資源建立的場景
使用一個 Prefab 建立的場景

Build 成為 Android 的 apk 檔


使用一個模型資源建立的場景
使用一個 Prefab 建立的場景
在 Build 的結果中,使用一個 Prefab 建立的場景所佔用的容量,比使用一個模型資源直接建立的場景所佔容量稍微小一些,不過,基本上,差異並不大。

與上次測試所使用的其他三種做法的場景比較,可以看出使用一個模型資源或一個 Prefab 所建立的場景,所佔的容量並不是最小的,反而比直接在場景中建立模型的做法還要大。

所以可以發現到,如果直接在場景中建立模型,而這個模型不會使用到第二次或者不會提供給其他場景使用的話,就沒有必要為它另外製作成 Prefab 或者資源檔案,因為,這樣做對於工作流程或者最後 Build 的容量,都不會帶來什麼好處。

經過了這兩次的測試,可以獲得比較明顯的結果是,使用多個 Prefab 組合的場景,所佔容量最大,使用多個模型資源組合起來的場景,所佔容量最小。

然而,追求最小的容量,並不是整體專案開發上的唯一目標,還要看實際狀況與需求去評估,該如何做才是最好的,就要看開發者們如何取捨了。

如果,你喜歡這個文章或所展示的影片,請幫忙介紹給你的朋友,也別忘了訂閱影片頻道以及來粉絲專頁按個讚,謝謝!

使用 Unity 版本 5.2.3f1。

影片中所使用的專案可在此下載:
http://1drv.ms/1IZF4TP