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

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

Unity 搭建ILRuntime開(kāi)發(fā)環(huán)境

2022-08-19 16:32 作者:游戲開(kāi)發(fā)RAIN  | 我要投稿

Unity熱更新目前主流的方案有; Lua, ILRuntime, puerts, huatuo方案。前兩個(gè)大家都比較熟悉了,puerts 是基于TypeScript開(kāi)發(fā)的熱更新,huatuo是基于C#的方案。后兩個(gè)大家會(huì)比較陌生。本系列分享基于ILRuntime來(lái)做熱更新。

ILRuntime熱更新原理

ILRuntime熱更新原理是基于Unity引擎,內(nèi)置一個(gè).net 字節(jié)碼解釋器,解釋執(zhí)行.net字節(jié)碼。對(duì)于開(kāi)發(fā)人員而言,使用.net技術(shù)將游戲邏輯代碼開(kāi)發(fā)出.net標(biāo)準(zhǔn)的字節(jié)碼動(dòng)態(tài)庫(kù)(.dll)。將.net字節(jié)碼的dll放入到Unity的資源里面,然后加載這個(gè)資源文件里面的.net字節(jié)碼,再用內(nèi)置的解釋器解析執(zhí)行游戲邏輯。如果把這個(gè)”字節(jié)碼.dll資源”放服務(wù)器,就可以實(shí)現(xiàn)更新下載,然后再裝載運(yùn)行。有原理可知,我們實(shí)現(xiàn)ILRuntime來(lái)開(kāi)發(fā)項(xiàng)目,就可以分成2個(gè)部分:

(1):內(nèi)置.net 字節(jié)碼解釋器到Unity游戲項(xiàng)目中;

(2):來(lái)創(chuàng)建一個(gè).dll的.net項(xiàng)目工程,基于Unity引擎的.dll的庫(kù)來(lái)開(kāi)發(fā)游戲邏輯;

熱更新原理圖


ILRuntime 開(kāi)發(fā)環(huán)境搭建


了解了上面的原理,我們搭建ILRuntime就很好理解了,首先第(1)部分,安裝ILRuntime解釋器代碼庫(kù),同時(shí)在項(xiàng)目實(shí)例化ILRuntime解釋器。這里我們以Unity 2020.2.3f1版本為例,來(lái)進(jìn)行環(huán)境配置講解。很簡(jiǎn)單,先安裝.net,版本要求>= 4.6.1,我用的是4.7, 然后打開(kāi)Unity編輯器,點(diǎn)擊Window菜單, 選擇PackageManager, 搜索ILRuntime安裝即可。

熱更新原理圖

注: Packages記得選”Unity Registry”, 然后安裝ILRuntime即可,同時(shí)打開(kāi)Unity PlayerSetting 選unsafecode模式。安裝好ILRuntime開(kāi)發(fā)環(huán)境后,接下來(lái)在項(xiàng)目中實(shí)例化ILRuntime的解釋器。編寫(xiě)一個(gè)ILRuntimeWrapper.cs的全局單例,引入using ILRuntime.Runtime.Enviorment;ILRuntime名字空間,在Awake中實(shí)例化ILRuntime解釋器實(shí)例: this.appdomain = new ILRuntime.Runtime.Enviorment.AppDomain();

AppDomain,就可以理解為是全局唯一的ILRuntime的解釋器對(duì)象實(shí)例,主要用它來(lái)解釋執(zhí)行我們的.net熱更項(xiàng)目的.dll字節(jié)碼。

接下來(lái)安裝第(2)部分, 創(chuàng)建一個(gè)基于.net的.dll的工程項(xiàng)目,作為可熱更的游戲邏輯項(xiàng)目。(如果你懶,可以拷貝使用示例代碼里面的邏輯熱更項(xiàng)目,.net版本和你自己的保持一致即可)這個(gè)項(xiàng)目有幾個(gè)特點(diǎn):必須最終是要生成.dll的.net動(dòng)態(tài)庫(kù),要加上Unity使用的依賴(lài),所以我們專(zhuān)門(mén)在這個(gè)項(xiàng)目下創(chuàng)建一個(gè)文件夾UnityDlls用來(lái)存放開(kāi)發(fā)中依賴(lài)Unity的動(dòng)態(tài)庫(kù)。

熱更項(xiàng)目位置

依賴(lài)Unity的Dll

當(dāng)我們開(kāi)發(fā)游戲邏輯的時(shí)候,使用了Unity的那些庫(kù),只要從我們Unity的引擎里面找到這些.dll,然后復(fù)制到UnityDlls下面,然后添加引用到熱更項(xiàng)目工程就可以了(這樣你在熱更項(xiàng)目就可以盡情的使用Unity的API,而且還是C#的)。如何找呢?有個(gè)小技巧,你打開(kāi)標(biāo)準(zhǔn)的Unity項(xiàng)目工程,在” Assembly-CSharp”這里的引用就能看到我們使用的Unity的.dll, 例如我們要使用動(dòng)畫(huà)播放組件Animation, 它在UnityEngine.AnimationModule.dll里面,你就可以復(fù)制路徑,找到這個(gè).dll,然后把這個(gè).dll拷貝到”邏輯熱更項(xiàng)目”的UnityDlls里面,然后在邏輯熱更項(xiàng)目中添加這個(gè).dll的引用。

如何找到依賴(lài)的Unity的Dll的路徑


配置一下生成.dll的路徑,我們把這個(gè).dll生成到Unity項(xiàng)目里面的StreammingAssets路徑下,這樣方便我們編譯后直接在Unity中馬上就可以執(zhí)行,所以我這邊在邏輯熱更項(xiàng)目中配置輸出路徑,

配置輸出路徑到StreammingAssets/Hotfix下

這樣環(huán)境就配置好了,在邏輯熱更項(xiàng)目中開(kāi)發(fā)邏輯代碼,開(kāi)發(fā)完成以后,邏輯熱更項(xiàng)目生成.dll給Unity,Unity 加載.dll解釋執(zhí)行。


Unity 搭建ILRuntime開(kāi)發(fā)環(huán)境的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
常熟市| 嘉定区| 彭水| 遂昌县| 霞浦县| 灌云县| 吉林省| 滦平县| 晋州市| 防城港市| 安泽县| 平南县| 剑河县| 淄博市| 莱西市| 洪洞县| 临沭县| 宣汉县| 墨玉县| 静乐县| 巴林左旗| 阳朔县| 宜兰县| 宁城县| 新竹市| 玛沁县| 耒阳市| 陈巴尔虎旗| 孝感市| 阿勒泰市| 太保市| 巩义市| 蓬莱市| 黎城县| 额济纳旗| 五寨县| 台安县| 亚东县| 上思县| 芮城县| 阆中市|