Unity3D的資源管理

2021-07-25 09:59:40 字數 1888 閱讀 1628

asset bundles

製作:buildpipeline.buildassetbundle()

載入:assetbundle.load()

解除安裝:assetbundle.unload(bool unloadallloadedobjects)

unloadallloadedobjects = true:釋放解壓資料,所有已例項化的資源亦被釋放。

unloadallloadedobjects = false:釋放解壓資料,已例項化的資源不釋放。

resource folders

製作:project檢視中任意名為「resources」資料夾下的資源,無論場景中是否用到。

載入:resources.load()

解除安裝:resources.unloadunusedassets(),例項通過object.destroy()釋放。

工作方式:

所有resources資源及其相關資源都儲存於resources.assets中,但如果有資源被某場景使用,該資源則被儲存於該場景對應的sharedassets<0~n>.assets中。

如果編譯目標平台為streaming web player,則情況略有不同。你可以在設定中通過first streamed level with resources一項指定所有resources資源跟隨哪一場景(level)載入。在該模式下,所有先於「first streamed level」載入的場景,用到的resource資源同上,都儲存於其對應的sharedassets中;後於「first streamed level」載入的場景,其用到的resource資源,卻儲存於resources.assets中。

streaming web players

該模式中的streaming是以場景(level)為單位的,你可以在編譯設定中指定各個場景的載入順序,unity web player會按該順序自發非同步載入各場景。同時,unity也提供了通過www載入.unity3d場景檔案的api,使開發者對場景載入有更靈活的控制權。

assetbundle

想打包進assetbundle中的二進位制檔案,其檔名字尾必須為「.bytes」,unity會將其視為textassets對待。

assetbundle bundle = www.assetbundle;

除非使用assetbundle.loadall()獲取所有資源,否則無法得到乙個assetbundle中的資源列表。一般做法是在該assetbundle中放置乙個定好名稱的textasset,在其中維護乙份所有資源的名稱列表。

乙個assetbundle包可以引用其他assetbundle包中的資源。製作時,需要呼叫buildpipeline.pushassetdependencies()和buildpipeline.popassetdependencies()函式對;載入時,被引用的包需要先於引用包載入。

另外,重編這種包需要開啟buildassetbundleoptions.deterministicassetbundle,以保證每次重編時所使用的資源id都是一樣的。

你可以在乙個遊戲裡使用另乙個遊戲的assetbundle,前提是該assetbundle中所引用的資源,要麼存在於該assetbundle中,要麼已經被載入了遊戲中。為確保assetbundle引用的資源被編進同包中,製作時可以使用buildassetbundleoptions.collectdependencies選項。

assetdatabase

unity editor使用assetdatabase維護專案中的所有資源檔案,unity使用這套api取代傳統的filesystem。這是乙個editor類,所以只有在名為「editor」的資料夾下的script中才有用。

Unity3d資源管理分析

1.unity3d占用記憶體太大的解決方法 星塵 討論assetbundle resources gameobject 的生命週期問題。對assetbundle.unload,instantiate,destory,unloadunusedasset有詳細的辨析。討論基於unity3d 4.1.5,...

Unity3D 美術資源規範

一.單位,比例統一 在建模型前先設定好單位,在同一場景中會用到的模型的單位設定必須一樣,模型與模型之間的比例要正確,和程式的匯入單位一致,即便到程式需要縮放也可以統一調整縮放比例。統一單位為公尺。二.模型規範 所有角色模型最好站立在原點。沒有特定要求下,必須以物體物件中心為軸心。面數的控制。移動裝置...

Unity3D 動態載入資源

一 內部呼叫 1.resources.load path type 或resources.loadall path type 載入儲存在resources資料夾中path處的資源,必須忽略字尾名。gameobject instance instantiate resources.load enemy...