Unity3D熱更新全書-何謂熱更新诫咱,為何熱更新笙隙,如何熱更新

何謂熱更新

熱更新,每個(gè)程序員一聽就明白坎缭,但是它語出何處竟痰,究竟表達(dá)了什么含義,到底代表了什么掏呼,對(duì)技術(shù)有什么要求坏快,對(duì)經(jīng)驗(yàn)相對(duì)較少的程序員來說可能就有一層神秘面紗了。

熱更新憎夷,是對(duì)hot update 或者 hot fix的翻譯莽鸿,計(jì)算機(jī)術(shù)語,表示在不停機(jī)的前提下對(duì)系統(tǒng)進(jìn)行更改岭接。

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

熱更新啃沪,是個(gè)很形象的詞,機(jī)器燙的時(shí)候更新窄锅,開著更新创千。

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

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

那么對(duì)于Unity3D來說,何謂熱更新入偷?

額……這個(gè)真相實(shí)在是不想講出來追驴,因?yàn)楹芏鄷r(shí)候,這個(gè)詞都用錯(cuò)了疏之。

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

很多時(shí)候我們用著熱更新這個(gè)詞匯丙曙,卻不需要真的熱更新爸业。

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

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

讓我們暫時(shí)放過這個(gè)我們的需求連詞匯都用錯(cuò)了這個(gè)基本事實(shí)钧忽,來總結(jié)一下何謂Unity3D熱更新

Unity3D熱更新就是指:用戶重啟客戶端就能實(shí)現(xiàn)客戶端資源代碼更新的需求或者功能。

為何熱更新

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

沒有熱更新:

pc用戶:

下載客戶端->等待下載->安裝客戶端->等待安裝->啟動(dòng)->等待加載->玩

手機(jī)用戶:

商城下載APP->等待下載->等待安裝->啟動(dòng)->等待加載->玩

有了熱更新

pc用戶:

啟動(dòng)->等待熱更新->等待加載->玩

有獨(dú)立loader的pc用戶:

啟動(dòng)loader->等待熱更新->啟動(dòng)游戲->等待加載->玩

手機(jī)用戶:

啟動(dòng)->等待熱更新->等待加載->玩

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

為了方便用戶洲拇、留住用戶、進(jìn)而從留住的用戶身上賺到錢曲尸,熱更新如今已經(jīng)成為了大部分游戲的標(biāo)配功能赋续。

如果你的游戲不標(biāo)配這個(gè)功能敲霍,那么競爭力就會(huì)少一些罐农,無論是主動(dòng)還是被動(dòng),無論是方便用戶還是被標(biāo)配掀亥,你都必須面對(duì)熱更新這個(gè)課題昆箕,雖然這個(gè)詞用錯(cuò)了鸦列。

如何熱更新

熱更新是為了讓用戶獲得資源和代碼的變更,這里的代碼不是指真的代碼鹏倘,用戶不要代碼薯嗤,他要的是變化的業(yè)務(wù)邏輯。實(shí)現(xiàn)變更的具體過程是首先查并更新本地資源和業(yè)務(wù)邏輯纤泵,如需下載則下載骆姐。然后啟動(dòng)時(shí)資源均從本地資源創(chuàng)建,業(yè)務(wù)邏輯從本地執(zhí)行捏题。

Unity3D提供了一種機(jī)制AssetBundle玻褪,可以滿足所有資源的比對(duì)下載加載,但是assetbundle每平臺(tái)分別打包對(duì)于多平臺(tái)項(xiàng)目而言比較麻煩公荧,是一個(gè)明顯的短板带射,而且assetbundle不能脫離unityeditor產(chǎn)生,也是一個(gè)麻煩循狰,項(xiàng)目大了話窟社,多人合作券勺,把所有資源都放入assetbundle明顯降低效率。

對(duì)于代碼桥爽,Unity3D是不提供變更機(jī)制的朱灿。但是Unity3D執(zhí)行核心是Mono,也就是dotnet钠四,dotnet有一種符號(hào)反射機(jī)制盗扒,可以直接加載一個(gè)dll,然后反射出其中的類型進(jìn)行操作缀去。符號(hào)和反射的主要問題是有些平臺(tái)不能使用侣灶,比如ios wp8。另外dotnet有一種emit機(jī)制缕碎,可以運(yùn)行時(shí)調(diào)用編譯器對(duì)代碼進(jìn)行編譯褥影,他的問題也是平臺(tái)不支持。

以上兩點(diǎn)是Unity3D免費(fèi)贈(zèng)送給你的幫助

如果不能滿足你的需求咏雌,你就需要自己搞定三個(gè)模塊:

資源下載模塊

當(dāng)assetbundle不能滿足需要時(shí)凡怎,我們需要自己建立檢查更新需要?jiǎng)t下載的機(jī)制,也就是資源下載模塊赊抖。

這個(gè)資源下載模塊應(yīng)該有一個(gè)版本生成工具统倒,我們將一組文件生成一個(gè)一個(gè)版本待下載。

有一個(gè)Unity3D用的下載模塊氛雪,下載模塊會(huì)首先檢查服務(wù)器上的版本信息房匆,和本地信息做比對(duì),需要的文件則下載报亩。

資源加載模塊

然后需要建立自己的從下載保存在本地的文件中加載出資源的機(jī)制浴鸿,也就是資源加載模塊。

資源加載模塊負(fù)責(zé)從下載的文件中加載出資源弦追。

如果你希望游戲帶有一份初始資源文件岳链,這里有兩種思路

一種是資源加載模塊直接提供從包內(nèi)文件和下載文件兩種加載路徑

一種是游戲第一次啟動(dòng)時(shí),將包內(nèi)文件全部copy到下載文件

腳本模塊

當(dāng)符號(hào)反射不能滿足需求時(shí)骗卜,業(yè)務(wù)邏輯更新就只有套用腳本語言這一條路宠页,也就是腳本模塊。

雖然dotnet世界里有很多腳本可以用 ironRuby ironPython,可是在unity這個(gè)特定環(huán)境下全部不可用寇仓。

你可以使用的一個(gè)選擇是lua举户,這個(gè)由魔獸世界采用作為界面腳本,從而紅遍整個(gè)游戲行業(yè)遍烦,十年經(jīng)久不衰的腳本俭嘁。

unity有了很多l(xiāng)ua的綁定庫,也有了unilua這樣的pure c#移植實(shí)現(xiàn)服猪。

你還有一個(gè)選擇是C#Light/Evil供填,他是C#語法的拐云,pure c#實(shí)現(xiàn)的一門新生腳本語言,就是為了Unity3D邏輯熱更新而生近她。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叉瘩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子粘捎,更是在濱河造成了極大的恐慌薇缅,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攒磨,死亡現(xiàn)場離奇詭異泳桦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)娩缰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門灸撰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拼坎,你說我怎么就攤上這事浮毯。” “怎么了泰鸡?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵亲轨,是天一觀的道長。 經(jīng)常有香客問我鸟顺,道長,這世上最難降的妖魔是什么器虾? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任讯嫂,我火速辦了婚禮,結(jié)果婚禮上兆沙,老公的妹妹穿的比我還像新娘欧芽。我一直安慰自己,他們只是感情好葛圃,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布千扔。 她就那樣靜靜地躺著,像睡著了一般库正。 火紅的嫁衣襯著肌膚如雪曲楚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天褥符,我揣著相機(jī)與錄音龙誊,去河邊找鬼。 笑死喷楣,一個(gè)胖子當(dāng)著我的面吹牛趟大,可吹牛的內(nèi)容都是我干的鹤树。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼逊朽,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼罕伯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叽讳,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤追他,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绽榛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湿酸,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年灭美,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了推溃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡届腐,死狀恐怖铁坎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情犁苏,我是刑警寧澤硬萍,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站围详,受9級(jí)特大地震影響朴乖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜助赞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一买羞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雹食,春花似錦畜普、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至街立,卻和暖如春舶衬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赎离。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工约炎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓圾浅,卻偏偏與公主長得像掠手,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狸捕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

  • 1喷鸽、什么是AssetBundle AssetBundle 是Unity pro提供的一種用來存儲(chǔ)資源的文件格式,它...
    好怕怕閱讀 7,551評(píng)論 1 8
  • 何謂熱更新 Unity3D熱更新就是指:用戶重啟客戶端就能實(shí)現(xiàn)客戶端資源代碼更新的需求或者功能灸拍。 為何熱更新 熱更...
    京野男爵閱讀 1,555評(píng)論 0 6
  • 翻譯:莫銘原文地址:AssetBundle usage patterns 本系列中的上一篇文章覆蓋了AssetBu...
    莫銘閱讀 5,282評(píng)論 1 12
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,303評(píng)論 25 707
  • 在中小學(xué)書法教育中鸡岗,不能只重技法混槐,還要了解書法發(fā)展?歷史。魏碑是楷書的一種轩性,魏楷和晉朝楷書声登、唐朝楷書并稱三大楷書字...
    鳳尾竹_26ed閱讀 333評(píng)論 3 3