Unity之AssetBundle的實際應用

2021-07-31 22:59:11 字數 1629 閱讀 8861

assetbundle是unity一種特有的資源格式,其他的專案我不了解,從入行到現在經歷的所有的unity遊戲專案,所需的資源都是打成bundle的形式供專案使用。

assetbundle的優點總結為以下幾點:

1.資源壓縮,可以減小安裝包的大小。安裝包大小其實對於一些中小cp來說是必須要控制的,或者說是越小越好,因為遊戲上線大推之前,某些xx渠道會給你設很多障礙,比如要接googleplay,包體必須要控制到150m;安裝包越大,推行費用越高等等,這裡就不細說了。

2.支援各種資源打包,assetbundles可以包含unity可以識別的任何型別的資源,包括場景,模型,材質,紋理,音效以及自定義的二進位制資料。唯一的例外是,指令碼資源是不被允許的,但是有一種特殊情況,當prefab上掛了某一指令碼被打成bundle,在你的正在使用的專案中有同名指令碼,該指令碼會被執行,如果沒有,該指令碼元件失效。

3.支援非同步載入,可以很好地緩解資源載入卡頓問題

以下主要介紹以下assetbundle的用法。

話不多說。

一.打包  

專案裡打包主角模型 ,其他檔案型別例如**,特效,貼圖等打包方式基本一致,只是在判斷原始資源型別處不同

caching.cleancache();//清快取

// 保證目標資料夾存在且為空

if (system.io.directory.exists(targetpath))

system.io.directory.createdirectory(targetpath);

string playerdir = system.io.directory.getfilesystementries(playerpath);

foreach (string p in playerdir)

else

debug.logerror("create roleres asset error!!! " + filename);

}else

}}

// 不同平台下streamingassets的路徑

public static readonly string rawpath =

#if unity_android && !unity_editor

#elif unity_ios && !unity_editor

#elif unity_standalone_win

#else

#endif

void loadfunction().assetbundle", rawpath, path));

yield return www;

if (!string.isnullorempty(www.error))

, error: ", tblid, www.error), logtype.fatal);

}else

if(null != ab)

}

對於assetbundle的用法先介紹到這,後續補充。

三.   完

Unity打包載入場景(Assetbundle )

打包scene 我們可以把整個場景進行打包,因為移動平台不能更新指令碼,所以這個功能就會有所限制,我的建議是烘培場景,然後把多個場景可復用的物件移除,場景中只保留獨一無二的遊戲物件,然後再打包場景,執行遊戲時載入場景後,再動態的將之前移除的物件重新新增進來。menuitem custom edito...

Unity打包以及載入AssetBundle思路

1.通常把專案中用到的所有shader打到乙個ab包裡,在資源呼叫時首先載入所有shader,因為專案中很多資源引用了shader 2.把一些共同引用的資源打到同乙個包裡,比如uia用了materialc,uib也用了materialc,uia,uib還用到了texc,那麼我們把materialc,...

unity之靶心製作

首先要知道兩個概念,乙個螢幕的座標是左上角為 0,0 而滑鼠位置的座標左下角為 0,0 靶心貼圖 public texture texture void ongui 計算準心貼圖的座標 rect rect new rect input.mouseposition.x texture.width 1 ...