1. 程式人生 > >筆試面試——unity基礎篇

筆試面試——unity基礎篇

載入AssetBundle

主要兩種方式,分別是new WWW(url)和WWW.LoadFromCacheOrDownload
new WWW是無論什麼情況都從指定的URL中下載資源,並載入到記憶體中
WWW.LoadFromCacheOrDownload是把AssetBundle寫入到快取中,然後在需要載入AssetBundle時,再從快取中讀取AssetBundle,達到一個加速效果,而且只在記憶體中儲存一些必要的快取指標資訊,因此非常省記憶體。首次載入時略慢,之後很快。

協程原理

協程其實就是一個IEnumerator(迭代器),IEnumerator 介面有兩個方法 Current 和 MoveNext() ,前面介紹的 TaskManager 就是利用者兩個方法對協程進行了管理,只有當MoveNext()返回 true時才可以訪問 Current,否則會報錯。迭代器方法執行到 yield return 語句時,會返回一個expression表示式並保留當前在程式碼中的位置。 當下次呼叫迭代器函式時執行從該位置重新啟動。
Unity在每幀做的工作就是:呼叫 協程(迭代器)MoveNext() 方法,如果返回 true ,就從當前位置繼續往下執行。

AssetBundle.Unload(false)

當引數是false時,會釋放掉assetbundle裡面的關於資源的壓縮檔案資料,記錄著關於該資源的一些資料(應該也儲存著該資源的引用)
AssetBundle.Unload(false):釋放AssetBundle檔案記憶體映象
AssetBundle.Unload(true):釋放AssetBundle檔案記憶體映象同時銷燬所有已經Load的Assets記憶體物件

資源管理

使用緩衝池
按資源的位置及載入方式分類:
普通資源(Normal) 這類資源儲存這工程中Resources目錄外, 執行是儲存於本地,自動載入。引用方式為直接引用,載入與引用都不需要引數
動態資源(Resources) 這類資源儲存與工程中的Resources目錄下, 執行時儲存於本地,執行時動態載入。Resources.Load
集合資源(Bundle) 以AssetBundle形式儲存於本地或網路中。載入時使用WWW方式載入,載入時需要Bundle存放的url路徑,版本號等引數。
外部資源(External) 這類資源儲存在專案外, 執行時可能儲存於本地也可能儲存於網路中, 以自定義的方式載入和引用, 載入及引用時所需的引數也需要自己定義。