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一個關(guān)鍵的就是要能做到將apk中的資源文件剝離出來,并在Unity搜索該資源文件時將路徑重定向到外部資源實際存儲路徑拍埠。
這一步因為apk中的資源很多都跟場景綁定失驶,而且資源文件之間也有著依賴關(guān)系,要加載某個場景時枣购,屬于該場景的資源文件都要存在嬉探,而且依賴的資源也要存在,加載場景才會完整棉圈,所以有時候達到的效果會不理想(首包依賴其他場景的資源文件的時候涩堤,就要把依賴的這個場景的資源文件包括依賴鏈都加到首包中,這樣首包就可能還會太大)
這里的首包是UnityRuntime運行游戲前下載的第一個保證游戲可以正常啟動的第一個資源包(其實就是第一個場景在apk中的所有資源文件及依賴的資源文件)
結(jié)尾
Runtime其實就是一個Android上的app分瘾,Android我不懂胎围,app部分別人負責了。。所以我研究的是Unity部分的白魂,目前已經(jīng)可以達到預想的結(jié)果汽纤,不過目前穩(wěn)定性還沒有經(jīng)過具體的測試,而且只支持armeabi-v7 32位架構(gòu)的cpu而已碧聪。冒版。還有很多地方需要改進