我們用來做sprite的通常會留有很多空白的地方,我們在畫完了sprite之後,這些地方很可能就沒有什麼作用了。
如果想避免這些資源上的浪費,我們可以把各個sprite做成圖集,把上的空間盡量利用得充實一點。這時候,我們就需要乙個製作圖集的工具。
其實這個功能要自己寫也不難的,只是把各個sprite上的做copy pixel處理,然後計算乙個矩形範圍,把所有拾取的畫素按一定的規律放在一張上面。
不過這些較為底層的東西很多人都會害怕而選擇逃避,所以有很多直接可以用的工具,比如ngui的較新版本就有這個自**集的功能了,或者有很多圖集製作的軟體。
unity3d在推出2d功能的同時,也附帶了這個製作圖集的工具,也就是sprite packer了。
下面簡單的介紹一下sprite packer的用法:
在使用這個功能之前,我們先要到editor setting裡面把sprite packer開啟:
然後開啟sprite packer的視窗(window/sprite packer(developer preview)):
這個就是sprite packer的視窗了,主要的操作,其實就是左上角的這個pack的按鈕了。不過現在我們按這個按鈕,不會有任何東西出現。
在我們的專案資料夾裡面,我放了幾個已經做好切割的sprite
選擇這些sprite,把屬性裡面的packing tag輸入乙個名字。這裡我所有sprite都輸入了enemys:
現在再來點pack按鈕,就會出現了東西了。這就是把剛才那對sprite拼起來的圖集了。
假如我們把主角土豆人的packing tag改成players(或者其他和之前不一樣的名字)
我們再來pack,就會看到,土豆人在圖集裡面消失了。
在這個圖集選擇裡面,我們可以看到剛才新增加的players類別
選擇players,又看到土豆人了。這是因為這個sprite packer做圖集是根據packing tag標籤來做的,它會把同樣標籤的物體分成一類,然後製作。
實際上我們能做的操作真的不多,這個過程是自動完成的。完成之後,我們在專案面板下面選擇sprite,在圖集裡面相應的sprite會變成高亮顯示。
既然這個功能是這樣自動化,那為什麼一開始是禁用狀態,需要我們手動去editor setting裡面設定開啟呢?
原因是這個功能在unity開啟工程的時候會先花一些時間運算圖集,如果你需要計算的sprite很多,那麼開啟就會慢一些。
計算好的圖集會放在快取資料夾project\library\atlascache裡面,如果把這裡的內容刪掉,那麼unity將會再次運算圖集。
然後如果選擇了製作圖集,那麼sprite的原圖就不會經過壓縮以便拾取畫素製作圖集了。
本文寫作內容基於unity4.3.0版本,但sprite packer的核心思路仍適用於unity4.3更高版本和unity5.x
本文**自:
unity效能優化2
1 效能優化的是 低幀率或者高記憶體占用 通過unity profiler 我們知道誰占用cpu多少時間,遊戲如何使用記憶體 左側的是cpu使用情況,gpu,渲染,記憶體,聲音。下半部分顯示當前幀的詳細情況 1 如果遊戲執行的慢,我們首先看cpu,看誰占用了他大量的時間 a resources目錄下...
unity學習筆記2
自 對於新手學習unity碰撞講的還是比較清楚的 ontriggerenter和oncollisionenter的觸發條件是不同的,需要在設計的過程中加以關注。碰撞的兩個物體a,b,都要有碰撞體 collider box collider,sphere collider,capsule collid...
UNITY 跑酷學習2
今天又看了知乎,又看到了學習方法,裡面提到意志力的重要性,以及有效學習的概念,我看到了裡面說,寫部落格能增強我的意志力,所以我今天來將昨天的工作新增到部落格,算一次積累,訓練意志力的機會,以及熟悉unity 3d的機會。昨天主要實現了road的自動產生,以及人物運動的碰撞機制,以及簡單的ui的處理。...