資源篇 資源打包

2021-09-25 01:51:47 字數 2785 閱讀 7377

記錄打包工具開發流程,探尋最簡單的打包方法。

打包的過程一般分為兩步

設定標籤名稱也就是assetbundle的名稱

使用unity的api打包

是不是很簡單,是的,接下來我們來看看具體怎麼實現?

先說設定assetbundle裡面的名稱

打包的時候,只會打包已經設定過assetbundle標籤的資源,沒有設定的會忽略,這樣的話我們就能根據專案的需求,合理化的設定這一些標籤了。

先看乙個簡單的assetbundle(執行tool/buildall可生成assetbundle)

看看這樣多方便啊,只要設定了,然後利用unity打包api就能自動生成assetbundle,很完美。

一兩個資源還好說,100個呢,1000個,你乙個個手動去設定?

所以我們需要自動設定標籤,既然是自動設定就需要有個規則。

那麼設定標籤的規則又是什麼?

先看一張圖

希望打出來的assetbundle的結構和buildresource的結構保持一致。

要實現這個需求,我們只需要設定assetbundle的名稱帶有路徑就可以了。

我們規定,使用相對路徑作為標籤名,這樣就會在打包的時候生成和資源目錄一樣的結構(上圖可做對比)。

這裡有乙個問題,我們希望通過ui/uiprefab去載入資源,而不是uiprefab,為什麼要這樣呢?看帶有路徑的資源,能排除專案中的很多問題。所以這裡我們需要儲存路徑對應資源名稱的關係,為什麼要這樣?因在assetbundle裡面的資源是通過名稱載入的。

// 資源路徑

"material/testmaterial":

,

載入時我們會使用資源路徑尋找assetbundle載入(通過assetbundles檔案(打包的時候生成的)依賴載入),然後利用資源名從assetbundle中載入資源。

現在assetbundle的依賴檔案,資源的資訊檔案,都有了,打包也根據檔案路徑打出了每個assetbundle,這樣再也不用手動設定標籤了,完美!

乙個資源打乙個assetbundle是不是太浪費了?assetbundle的粒度太小,而且一些資源間是有關係的,比如某個場景的很多資源,某個ui的很多資源,載入的時候載入多個assetbundle沒有載入乙個總體的assetbundle快,而且粒度太小也會導致頻繁的載入、解除安裝(因為只有乙個資源的話,生命周期短,很容易就結束了)。如果這些相關聯的資源在乙個assetbundle裡面載入就會快很多,也不容易解除安裝,也會好管理。所以這裡我們需要有個分類的標準。

關鍵是這個標準怎麼定?你憑感覺這些資源要打包在一起?

我們採取一種靈活的方式,使用檔案標籤,就是想下圖一樣

加入乙個merge檔案時候,這個資料夾下面的資源就會打到一起,並且以這個資料夾的名稱命名。這樣,不管專案的什麼時期,都可通過調整檔案標籤的位置,將需要的資源打到乙個assetbundle裡面去。

這樣是不是很靈活啊,對吧。這樣我們就能靈活的控制打包的粒度大小了,其實你也可以以你自己的方式,通過**來控制,粒度的大小,不管怎麼樣,最終的結果肯定都是一樣的。

現在我們加入了打包粒度大小的控制。

上訴我們說的功能,是每個打包都需要的乙個基礎過程,接下來才是為專案量身定做的部分,也是整個打包過程中,最麻煩的部分。

專案的高中低配處理方式:一般情況下我們控制最多的還是特效,在打包開始之前,將特效生成高中低三個資源,並且打包到乙個assetbundle中,後期根據選擇的質量載入相應的資源。

去除ui的預設顯示:ui上會有些預設的顯示,比如,文字,等等,這些又不能直接在原始檔中刪除(你刪掉之後,ui後面調整起來很吃力的),也不能在載入的時候顯示(ui真正顯示前會出現預設顯示),所以我們可以在打包前,去除這些預設顯示。

ui的載入和圖集分離:我們的目的是載入ui和載入圖集是兩個流程(目的是解除安裝ui的時候只解除安裝圖集,prefab不解除安裝),就需要將ui的圖集引用斷開,並且加入指令碼建議聯絡,載入的時候根據指令碼去載入。

等等…

雖然打包前的處理有些麻煩,但是這是提公升打包質量和優化專案的好地方。往往打包問題多是有原因的。

現在我們處理了打包前的情況。

每次我們打多個平台的資源的時候怎麼打的?乙個個去手動打?對於程式設計師來說這不是很掉價啊?所以我們利用命令列來自動打包。

先建立乙個批處理檔案:

批處理**:

@echo off

@set unity="f:\soft\unity2018.3.0f2\editor\unity.exe"

echo command build start

%unity% -quit -batchmode -executemethod editortool.buildcommandline -logfile d:\editor.log -projectpath "d:\unitywork\assetmanagerframe"

echo command build finish

pause

執行批處理檔案就能自動打包了,如果出現unity未啟用的情況,要麼你就先登入unity去啟用,要麼就按照官網的方式使用命令去啟用,都行!

unity普通資源打包

unity資源,通常分為八類,即音效,特效,模型,shader,icon,字型,場景,ui.音效 shader icon 字型,打包策略比較簡單,是直接標記ab的方式進行打包。其他資源為了防止冗餘,也為了減少包體大小等原因,中間進行拆解資源 歸類後,對細小資源進行打包,載入時再逆向載入出去,打資源拼...

Unity資源打包 打包分析

遊戲立項中重要的一件事就是制定資源存放規則 資源使用規則,然後再談打包規則。較好的分類是乙個清晰 清爽愉悅的工作流,策劃 美術 程式之間溝通 使用更加方便快捷。存放規則根據團隊 個人喜好制定即可 1.1 分類 分類放置後,需要使用。unity的資源如何使用,涉及到如何打包以及如何載入的問題。使用pr...

遊戲資源打包方法總結

首先,定義兩個名詞。block 打包資料的單位,可以是乙個檔案也可以是乙個資料塊。總之是資源包中的一塊資料。包,資源包 即包含多份資料的乙個檔案。1block size block data 按資料塊大小 資料塊內容的方式將一批資料塊逐個打包。這是比較簡單實用的方法。往往還需要生成乙個文字檔案指明每...