免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Unity3D 熱更新方案(集合各位專家的匯總)

“熱更新”這個詞,在Unity3D的應(yīng)用下,是有些語義錯誤的,但是作為大家都熟知的一項(xiàng)技術(shù),我們姑且這么叫它,相信很長時間內(nèi),大家依然還會這么叫,甚至有人叫它“暖更新”。

一、什么是熱更新?

熱更新,是對hot update或者hot fix的翻譯,計(jì)算機(jī)術(shù)語,表示在不停機(jī)的前提下對系統(tǒng)進(jìn)行更改(摘抄一下):

hot就是熱,機(jī)器運(yùn)行會發(fā)燙,hot就是不停機(jī)的意思。

熱更新,是個很形象的詞,機(jī)器燙的時候更新,開著更新。

比如Windows不重啟的前提下安裝補(bǔ)丁

比如Http服務(wù)器在不重啟的前提下?lián)Q掉一個文件

那么對于Unity3D來說,何謂熱更新?

……這個真相實(shí)在是不想講出來,因?yàn)楹芏鄷r候,這個詞都用錯了。

Unity3D是一個客戶端工具,用戶是否重啟客戶端,根本是我們不關(guān)心的問題。

很多時候我們用著熱更新這個詞匯,卻不需要真的熱更新。

只有少部分游戲,游戲資源在玩的過程中邊玩邊下,不重啟的前提下變更了資源。

我們不需要用戶不重啟客戶端就能實(shí)現(xiàn)資源代碼的更新,我們需要的是用戶重啟客戶端能實(shí)現(xiàn)資源代碼的更新。

讓我們暫時放過這個我們的需求連詞匯都用錯了這個基本事實(shí),來總結(jié)一下何謂Unity3D熱更新,Unity3D熱更新就是指:用戶重啟客戶端就能實(shí)現(xiàn)客戶端資源代碼更新的需求或者功能。

 

二、為什么要熱更新?

熱更新,能夠縮短用戶取得新版客戶端的流程,改善用戶體驗(yàn)

沒有熱更新:

pc用戶:

下載客戶端->等待下載->安裝客戶端->等待安裝->啟動->等待加載->

手機(jī)用戶:

商城下載APP->等待下載->等待安裝->啟動->等待加載->

有了熱更新:

pc用戶:

啟動->等待熱更新->等待加載->

有獨(dú)立loaderpc用戶:

啟動loader->等待熱更新->啟動游戲->等待加載->

手機(jī)用戶:

啟動->等待熱更新->等待加載->

通過對比就可以看出,有沒有熱更新對于用戶體驗(yàn)的影響還是挺大的,主要就是省去用戶自行更新客戶端的步驟。

三、如何熱更新?Unity3D的熱更新的方法比較

3.1Android 應(yīng)用的熱更新

· 將執(zhí)行代碼預(yù)編譯為assembly dll。

· 將代碼作為TextAsset打包進(jìn)Assetbundle。

· 運(yùn)行時,使用Reflection機(jī)制實(shí)現(xiàn)代碼的功能。

· 更新相應(yīng)的Assetbundle即可實(shí)現(xiàn)熱更新。

 

3.2、Android iOS 熱更新的異同

· 蘋果官方禁止iOS下的程序熱更新;JITiOS下無效。

· 熱更新方案:Unity+Lua插件。

 

3.3、 使用Lua 插件進(jìn)行iOS 熱更新的原理

 

 

3.4Unity 熱更新的注意點(diǎn)

· 需要更新的代碼、資源,都必須打包成AssetBundle(建議使用未壓縮的格式打包)

· 熟悉Unity的幾個重要的路徑

· Resources(只讀)

· StreamingAssets(只讀)

· Application.dataPath(只讀)

· Application.persistentDataPath(可讀寫)

 

3.5、重要路徑之 Resources

· Resources文件夾下的資源無論使用與否都會被打包

· 資源會被壓縮,轉(zhuǎn)化成二進(jìn)制

· 打包后文件夾下的資源只讀

· 無法動態(tài)更改,無法做熱更新

· 使用Resources.Load加載

 

3.6、重要路徑之StreamingAssets

· 流數(shù)據(jù)的緩存目錄

· 文件夾下的資源無論使用與否都會被打包

· 資源不會被壓縮和加密

· 打包后文件夾下的資源只讀,主要存放二進(jìn)制文件

· 無法做熱更新

· WWW類加載(一般用CreateFromFile ,若資源是AssetBundle,依據(jù)其打包方式看是否是壓縮的來決定)

· 相對路徑,具體路徑依賴于實(shí)際平臺

·Application.streamingAssetsPath

· IOS: Application.dataPath + “/Raw” Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw

 

3.7、重要路徑之Application.dataPath

· 游戲的數(shù)據(jù)文件夾的路徑(例如在Editor中的Assets

· 很少用到

· 無法做熱更新

· IOS路徑: Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data

3.8、重要路徑之Application.persistentDataPath

· 持久化數(shù)據(jù)存儲目錄的路徑( 沙盒目錄,打包之前不存在 

· 文件夾下的資源無論使用與否都會被打包

· 運(yùn)行時有效,可讀寫

· 無內(nèi)容限制,從StreamingAsset中讀取二進(jìn)制文件或從AssetBundle讀取文件來寫入PersistentDataPath

· 適合熱更新

· IOS路徑: Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents

 

3.9、使用Lua 插件進(jìn)行iOS 熱更新的總體流程


 

 

四、支持Unity iOS 熱更新的各種Lua 插件的對比

4.1、uLua(asset store)

· uLua插件原生版本,開山鼻祖

· 不會產(chǎn)生靜態(tài)代碼

· 反射機(jī)制,效率低下,速度慢,gcalloc頻繁

· 已停止更新維護(hù),不支持Unity5.x,淡出主流

 

4.2、uLua & cstoLua

· 開發(fā)平臺成熟穩(wěn)定,Bug修復(fù)迅速

· 開發(fā)者眾多,資源豐富

· 靜態(tài)方法,性能優(yōu)

· 有成功商業(yè)產(chǎn)品案例(啪啪三國、超神戰(zhàn)隊(duì)、酷魚吧捕魚、絕地戰(zhàn)警、這不是刀塔等) 

· 都是基于原生版本的改進(jìn);未來,兩者會合并成一個插件

開源項(xiàng)目地址: 

https://github.com/topameng/CsToLua

4.3、sLua

· 靜態(tài)方法,性能優(yōu)

· 核心代碼簡潔

· 資源較少,開發(fā)平臺不夠成熟穩(wěn)定

· 無成功商業(yè)產(chǎn)品案例成功商業(yè)產(chǎn)品案例

· 基于原生版本的改進(jìn)

開源項(xiàng)目地址:

https://github.com/pangweiwei/slua

4.4、C#Light(L#)

· 淡出主流,想要了解的小伙伴點(diǎn)擊這里:

https://github.com/lightszero/LSharp

4.5、 uniLua

· c#實(shí)現(xiàn)的Lua虛擬機(jī),非完整方案

· 淡出主流


4.6、各位專家給出的分析

下圖縱坐標(biāo)為測試用例,橫坐標(biāo)是消耗時間或內(nèi)存分配對數(shù)坐標(biāo) )。



 

綜合來看 肯定是 uLua & cstoLua會更好一些。

五、實(shí)踐

熟悉NGUI的小伙伴可以參考這里:

https://github.com/jarjin/SimpleFramework_NGUI

熟悉UGUI的小伙伴可以參考這里:

https://github.com/jarjin/LuaFramework_UGUI

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
騰訊開源手游熱更新方案,Unity3D 下的 Lua 編程
Unity熱更新方案探索與討論
讓你的游戲支持熱更新 - 在Unity3D中使用lua
Android平臺的代碼熱更新
uLua最新的Unity+Lua熱更新解決方案?。?!【技術(shù)綜合貼】
在Unity3d中解析Lua腳本的方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服