UnityRuntime總概

UnityRuntime概念

目前只研究了Android平臺,所以下面講的都是基于Android平臺的
首先說一下UnityRuntime這個概念,幾個月前我也才第一次聽到這個詞的。這個意思是讓Unity做出來的應用能同時在一個平臺上運行。。就像頁游一樣,都在瀏覽器上運行。而UnityRuntime本身也是一個app,起到的作用就類似瀏覽器,可以加載不同的Unity做出來的app并運行。

目的

當然UnityRuntime并不是單純的下載Unity導出的apk,再進行加載運行。這里的apk需要先處理,對apk中的資源進行分組打包放服務端供UnityRuntime下載,這樣就達到減小首包大小的目的。首包可以加一部分資源,其他資源通過靜默下載。還可達到熱更新的目的,apk中的dll也屬于資源的一部分,可以通過下載更新

難點

CocosRuntime比較容易實現(xiàn)主要是因為,Cocos開源,而且Cocos資源都是原始資源,并且有添加資源搜索路徑的接口;而Unity,資源加載路徑除了AssetBundle和部分可以通過WWW從外部加載的資源,其他的Unity加載的資源都通過Unity打包成某種文件格式打包到apk中。。而且Unity又不開源。

所以要實現(xiàn)UnityRuntime一個關鍵的就是要能做到將apk中的資源文件剝離出來,并在Unity搜索該資源文件時將路徑重定向到外部資源實際存儲路徑。
這一步因為apk中的資源很多都跟場景綁定,而且資源文件之間也有著依賴關系,要加載某個場景時,屬于該場景的資源文件都要存在,而且依賴的資源也要存在,加載場景才會完整,所以有時候達到的效果會不理想(首包依賴其他場景的資源文件的時候,就要把依賴的這個場景的資源文件包括依賴鏈都加到首包中,這樣首包就可能還會太大)

這里的首包是UnityRuntime運行游戲前下載的第一個保證游戲可以正常啟動的第一個資源包(其實就是第一個場景在apk中的所有資源文件及依賴的資源文件)

結尾

Runtime其實就是一個Android上的app,Android我不懂,app部分別人負責了。。所以我研究的是Unity部分的,目前已經(jīng)可以達到預想的結果,不過目前穩(wěn)定性還沒有經(jīng)過具體的測試,而且只支持armeabi-v7 32位架構的cpu而已。。還有很多地方需要改進

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容