最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

huatuo 零成本高性能的Unity全平臺(tái)原生c#熱更新方案

2022-12-22 18:47 作者:unity小能手  | 我要投稿


本質(zhì)比較

huatuo是原生的c#熱更新方案。原始il2cpp相當(dāng)于只有aot的mono,而huatuo則給il2cpp新增了原生的interpreter模塊,使得il2cpp變成一個(gè)全功能的mono,原生(即通過(guò)System.Reflection.Assembly.Load)支持動(dòng)態(tài)加載dll,從而支持ios等平臺(tái)的熱更新。其他熱更新方案則是新增了一個(gè)獨(dú)立于il2cpp的第三方vm。

正因?yàn)閔uatuo是原生runtime級(jí)別實(shí)現(xiàn),熱更新部分的類型與主工程AOT部分類型是完全等價(jià)并且無(wú)縫統(tǒng)一的??梢噪S意調(diào)用、繼承、反射、多線程,不需要生成代碼或者寫(xiě)適配器。

其他熱更新方案則是獨(dú)立vm,與il2cpp的關(guān)系本質(zhì)上相當(dāng)于mono嵌lua的關(guān)系。因此類型系統(tǒng)不統(tǒng)一,為了讓熱更新類型能夠繼承AOT部分類型,需要寫(xiě)適配器,并且解釋器中的類型不能為主工程的類型系統(tǒng)所識(shí)別。

實(shí)際使用體驗(yàn)或者特性比較

  • huatuo學(xué)習(xí)和使用成本幾乎為零。huatuo 讓il2cpp變成全功能的mono,學(xué)習(xí)和使用成本幾乎為零,幾乎零侵入性。而其他方案則有大量的坑和需要規(guī)避的規(guī)則,學(xué)習(xí)和使用成本,需要對(duì)原項(xiàng)目作大量改造。

  • huatuo可以使用所有c#的特性。而其他方案往往有大量的限制。

  • huatuo中可以直接支持使用和繼承主工程中的類型。其他方案要寫(xiě)適配器或者生成代碼。

  • huatuo中熱更新類型與主工程的AOT類型無(wú)縫統(tǒng)一。huatuo中反射代碼能夠正常工作的,主工程部分也可以通過(guò)標(biāo)準(zhǔn)Reflection接口創(chuàng)建出熱更新對(duì)象。其他方案做不到。

  • huatuo對(duì)多線程支持良好。像多線程、ThreadStatic、async等等特性都是huatuo直接支持,其他方案除了async特性外均難以支持。

  • huatuo中Unity工作流與原生幾乎完全相同。huatuo中熱更新MonoBehaviour可以直接掛載在熱更新資源上,并且正確工作。其他方案不行。

  • huatuo兼容性極高。各種第三方庫(kù)只要在il2cpp下能工作,在huatuo下也能正常工作。其他方案往往要大量魔改源碼。

  • huatuo內(nèi)存效率極高。huatuo中熱更新類型與主工程的AOT類型完全等價(jià),占用一樣多的空間。其他方案的同等類型則是假類型,不僅不能被runtime識(shí)別,還多占了數(shù)倍空間。

  • huatuo執(zhí)行效率高。huatuo中熱更新部分與主工程AOT部分交互屬于il2cpp內(nèi)部交互,效率極高。而其他方案則是獨(dú)立虛擬機(jī)與il2cpp之間的交互,不僅交互麻煩還效率低下。

文檔

  • wiki

  • 快速上手

  • FAQ

  • 示例項(xiàng)目

  • 知乎專欄

  • 支持與聯(lián)系 QQ群: 651188171(huatuo c#熱更新 開(kāi)發(fā)交流群)

穩(wěn)定性狀況

技術(shù)評(píng)估上目前穩(wěn)定性處于Alpha版本與Beta版本之間。

  • 完成了絕大多數(shù)指令的單元測(cè)試。只有calli、initblk等少數(shù)難以直接在c#里構(gòu)造的指令未添加對(duì)應(yīng)的單元測(cè)試。

  • 對(duì)照c#規(guī)范完成各項(xiàng)語(yǔ)法測(cè)試。

  • 測(cè)試了游戲常用庫(kù)和框架的兼容性,兼容性良好。 參見(jiàn)兼容性報(bào)告

  • 可以正確地加載?luban?配置

  • 可以正確地運(yùn)行?2048這樣的輕量小游戲

  • 可以運(yùn)行?StarForce?這樣的小型游戲

  • 目前已經(jīng)能在pc平臺(tái)順利運(yùn)行一個(gè)大型的MMORPG游戲項(xiàng)目。

RoadMap

huatuo雖然與il2cpp相關(guān),但絕大多數(shù)核心代碼獨(dú)立于il2cpp,很容易移植(預(yù)計(jì)一個(gè)月)到其他不支持AOT+Interpreter的CLR平臺(tái)。無(wú)論unity如何版本變遷,哪怕廢棄了il2cpp改用.net 6+,huatuo會(huì)持續(xù)跟進(jìn),穩(wěn)定地提供跨平臺(tái)的CLR熱更新服務(wù),直至某天.net官方直接支持AOT+Interpreter,則huatuo完成其歷史使命。

  • 持續(xù)修復(fù)bug,在Win平臺(tái)能正常運(yùn)行一個(gè)中大型游戲 (2022.4)

  • 持續(xù)跟進(jìn)unity的版本更新,支持更多的unity版本。查看現(xiàn)在支持的Unity版本?(2022.4)

  • 推進(jìn)Android與ios的全平臺(tái)測(cè)試 (2022.5)

  • 支持 hotfix AOT部分的bug (2022.6)

  • 除去大多數(shù)普通AOT泛型類限制 (2022.6)

  • 支持增量式gc。 (2022.7)

  • 指令優(yōu)化,編譯后指令數(shù)減少到原來(lái)1/4-1/2,基礎(chǔ)指令和大多數(shù)對(duì)象模型指令有100%-300%的性能提升。 (2022.7 出預(yù)覽版本)

  • 支持 extern函數(shù) (2022.7)

  • 其他內(nèi)存和效率優(yōu)化,以及代碼重構(gòu)

  • ===支持godot引擎===(2022.12)


huatuo 零成本高性能的Unity全平臺(tái)原生c#熱更新方案的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
长岛县| 德钦县| 十堰市| 甘谷县| 济源市| 玛多县| 霞浦县| 富阳市| 奈曼旗| 遂溪县| 锡林郭勒盟| 永登县| 西丰县| 垫江县| 绥德县| 革吉县| 洪泽县| 景泰县| 盐边县| 翼城县| 无为县| 肇庆市| 赣榆县| 苏州市| 沙洋县| 乌海市| 三原县| 泾阳县| 邓州市| 徐州市| 罗定市| 什邡市| 即墨市| 贵溪市| 大石桥市| 江油市| 木里| 大港区| 密云县| 青田县| 鄂尔多斯市|