国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Unity實戰(zhàn)】HybridCLR熱更快速集成

這篇具有很好參考價值的文章主要介紹了【Unity實戰(zhàn)】HybridCLR熱更快速集成。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文假設(shè)你已經(jīng)通過UPM導(dǎo)入了HybridCLR、Addressables、il2cpp支持并具有一定的C#基礎(chǔ)和Unity編輯器操作能力。

熱更程序集

由于本文主打快速集成,故將Assembly-CSharp劃入到熱更新DLL。理論上成熟的項目應(yīng)該用Assembly Definition進行精細劃分以便于管理和縮短編譯時間。但是若掌握不好,劃分不明白,可能會出現(xiàn)交叉引用導(dǎo)致反射機制原地GG。

有關(guān)Assembly Definition,請見官方文檔。

Unity - Manual: Assembly definitions

打開Project Settings, 找到Hybrid Settings,手動將Assembly-CSharp添加到熱更新DLL范圍內(nèi)。

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

如果你有Assembly Definition,也請?zhí)砑拥郊t框上方的屬性中。請注意,熱更新Assembly Definition和熱更新dlls屬于“并且”關(guān)系,不能存在相同項。

比如你把Assembly Definition的名寫到了底下熱更新dlls里頭了,然后上面熱更新Assembly Definition那里你還把你剛才手動填名字的Assembly Definition給拖進去了。

另起一個熱更入口程序集和場景

由于Assembly-CSharp為熱更新DLL,那么客戶端拉取熱更資源的邏輯就不能放在Assembly-CSharp,否則反射機制不起作用,還帶來報錯。

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

在這個程序集的同級目錄或者子級目錄起一個熱更入口腳本,具體怎么拉Addressables更新這里就省略了,加載熱更DLL的邏輯可參考如下:

    /// <summary>
	/// 加載熱更的DLL
	/// </summary>
	IEnumerator LoadHotfixDLLs()
	{
#if !UNITY_EDITOR
        // 讀取的熱更dll
        var hotFixDllLabelHandle = Addressables.LoadAssetsAsync<TextAsset>("HotUpdateDLL", null);
        yield return hotFixDllLabelHandle;
        var hotFixDlls = hotFixDllLabelHandle.Result;
        Addressables.Release(hotFixDllLabelHandle);
        // 加載獲得的dll
        foreach (var hotFixDll in hotFixDlls) {
            Assembly.Load(hotFixDll.bytes);
        }
        Debug.Log("[HotUpdater] LoadHotfixDLLs complete!");
#endif
		yield return null;
	}
	/// <summary>
	/// 加載aot的DLL
	/// </summary>
	/// <returns></returns>
	IEnumerator LoadMetadataForAOTDLLs()
	{
#if !UNITY_EDITOR
		HomologousImageMode mode = HomologousImageMode.SuperSet;
        var aotMetadateDllHandle = Addressables.LoadAssetsAsync<TextAsset>("AOTMetadataDLL", null);
        yield return aotMetadateDllHandle;
        var AOTMetadataDlls = aotMetadateDllHandle.Result;
        foreach (var AOTMetadataDll in AOTMetadataDlls)
        {
            LoadImageErrorCode err = RuntimeApi.LoadMetadataForAOTAssembly(AOTMetadataDll.bytes, mode);
            Debug.Log($"[HotUpdater] LoadMetadataForAOTAssembly:{AOTMetadataDll.name}. mode:{mode} ret:{err}");
        }
        Addressables.Release(aotMetadateDllHandle);
		Debug.Log("[HotUpdater] LoadMetadataForAOTDLLs complete!");
#endif
		yield return null;
	}

	IEnumerator EnterGame()
	{
		yield return LoadMetadataForAOTDLLs();
		yield return LoadHotfixDLLs();
		Addressables.LoadSceneAsync("MainMenu").Completed += (obj) =>
		{
			if (obj.Status == AsyncOperationStatus.Succeeded)
			{
				Debug.Log("[HotUpdater] Successfully load into MainMenu.");
			}
			else
			{
				Debug.LogError("[HotUpdater] Failed to load MainMenu scene!");
			}
		};
	}

簡而言之就是加載完熱更DLL后和AOT元數(shù)據(jù)DLL后再進入你游戲的主場景(或者說有引用Assembly-CSharp代碼的東西)。

這里筆者假定你的熱更新DLL以及元數(shù)據(jù)DLL在Addressables里各自有標簽,于是全拉出來進行Assembly.Load。

你可能會注意到宏,編輯器環(huán)境下測試是不能讀取熱更DLL的,因為屬于同一個程序集加載了兩遍,浪費不說還帶來問題。

編譯熱更新DLL和AOT元數(shù)據(jù)DLL

元數(shù)據(jù)DLL是個新詞,也是HybridCLR的牛逼之處。用大白話講,那些你引用的System命名空間、Newtonsoft.Json等等這些不需要熱更新的庫都算作AOT元數(shù)據(jù)DLL。

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

單擊All進行熱更新DLL編譯。

編譯完成后,你的工程文件夾下會有熱更新DLL和元數(shù)據(jù),你可以在Assets文件夾下另起一個存熱更DLL的文件夾,并將圖中文件夾里的內(nèi)容拷貝進去。

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

有關(guān)元數(shù)據(jù)DLL,不是所有的dll都需要拷貝,你可以看一下你工程里有一個叫AOTGenericReferences,那里有一個表。

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

但是別回到Unity Editor刷新,Unity會當成程序集導(dǎo)入,你需要改一下后綴名。

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

將DLL加到Addressables

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

你可以用Label標簽進行區(qū)分,案例中用的代碼是用label進行區(qū)分和加載。

Addressables系統(tǒng)設(shè)置

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

勾選Build Remote Catalog,配置Build和Load路徑為Remote

Build Settings設(shè)置

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

理論上你只需要把熱更入口場景打進去就行,其他都不要。

允許通過HTTP下載(可選)

【Unity實戰(zhàn)】HybridCLR熱更快速集成,unity,unity,游戲引擎

如果你測試環(huán)境用的網(wǎng)頁服務(wù)器沒有配置HTTPS,那么你需要把這個改成allowed,否則Addressables下載流程可能不會走。

然后走打包流程即可,現(xiàn)在你可以用打包出來的客戶端進行測試了。祝好運!文章來源地址http://www.zghlxwxcb.cn/news/detail-773424.html

到了這里,關(guān)于【Unity實戰(zhàn)】HybridCLR熱更快速集成的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Unity劃時代熱更方案 YooAsset+HybridCLR(wolong)(原h(huán)uatuo)(二)

    Unity劃時代熱更方案 YooAsset+HybridCLR(wolong)(原h(huán)uatuo)(二)

    在上一篇中對unity各大熱門的熱更方案進行了對比,HybridCLR完勝。本篇來說一說HybridCLR在unity中的安裝和使用。 注意: 安裝 2020.3.26+、 2021.3.0+、2022.3.0+ 中任一版本。如果你不是經(jīng)驗豐富的Unity開發(fā)者,推薦使用2021.3.1版本。 根據(jù)你所用的操作系統(tǒng),安裝過程中選擇模塊時,必

    2024年02月06日
    瀏覽(16)
  • Unity + HybridCLR,近乎完美的新熱更方案,從零開始(一)——Hello World

    Unity + HybridCLR,近乎完美的新熱更方案,從零開始(一)——Hello World

    最近又新接觸了一種unity熱更的解決方案——HybridCLR,自稱是: 特性完整、零成本、高性能、低內(nèi)存的近乎完美的Unity全平臺原生c#熱更方案 。 接下來我們就來一起學(xué)習(xí)下。 下面是官方文檔的鏈接,一切以官方為主:HybridCLR HybridCLR擴充了il2cpp的代碼,使它由純AOT runtime變成

    2024年02月07日
    瀏覽(18)
  • Unity劃時代熱更方案 YooAsset+HybridCLR(wolong)(原h(huán)uatuo)(六)完結(jié)篇

    Unity劃時代熱更方案 YooAsset+HybridCLR(wolong)(原h(huán)uatuo)(六)完結(jié)篇

    開始重頭戲了,我們都知道wolong是用來熱更代碼部分,YooAsset是熱更資源部分,所以二者結(jié)合起來可以就是熱更完美的解決方案。 下載wolong示例項目 用 git clone或者直接下載。 用unity打開此項目,發(fā)現(xiàn)這個項目菜單欄已經(jīng)有HybridCLR選項了,點擊該選項下方的installer…,安裝。

    2024年02月06日
    瀏覽(20)
  • C語言與游戲引擎插件開發(fā):Unity、Unreal Engine中C插件的編寫與集成(四)

    目錄 一、C插件開發(fā)最佳實踐與常見問題解析 性能優(yōu)化: 跨平臺兼容性: 版本管理與升級: 二、結(jié)論 C語言在游戲引擎插件開發(fā)中的關(guān)鍵作用與優(yōu)勢: 對開發(fā)者提出建議: 性能優(yōu)化: 內(nèi)存管理: 智能指針 :利用UE的 TSharedPtr 、 TWeakPtr 等智能指針管理動態(tài)內(nèi)存,確保資源釋

    2024年04月27日
    瀏覽(34)
  • C語言與游戲引擎插件開發(fā):Unity、Unreal Engine中C插件的編寫與集成(一)

    目錄 一、引言 C語言在游戲開發(fā)中的重要地位與優(yōu)勢 游戲引擎插件機制與C語言的價值 二、C語言基礎(chǔ)與游戲開發(fā)特性 C語言核心特性及其在游戲開發(fā)中的應(yīng)用 游戲引擎API對接關(guān)鍵概念與技巧 C語言在游戲開發(fā)領(lǐng)域占據(jù)著無可替代的重要地位,尤其在應(yīng)對高性能計算需求與底層

    2024年04月29日
    瀏覽(256)
  • Unity轉(zhuǎn)微信小游戲 HybridCLR + YooAsset 實踐

    Unity轉(zhuǎn)微信小游戲 HybridCLR + YooAsset 實踐

    參考鏈接:https://github.com/wechat-miniprogram/minigame-unity-webgl-transform?tab=readme-ov-file Unity 2021.3.15f1c1 Unity 2021.2.5f1c302 wxSDK HybridCLR 5.0.0 YooAsset 1.5.7 后臺配置白名單 微信小游戲注意事項: 不支持同步加載。 不支持資源加密。 不支持多Package 關(guān)閉WebGL本地緩存 參考地址 因為微信小游戲

    2024年04月12日
    瀏覽(145)
  • 【Unity】熱更新HybridCLR學(xué)習(xí)與實戰(zhàn)(一)

    【Unity】熱更新HybridCLR學(xué)習(xí)與實戰(zhàn)(一)

    從事unity開發(fā)以來一直未真正系統(tǒng)的學(xué)習(xí)過熱更新,現(xiàn)在業(yè)務(wù)上有需要,借此機會來深入學(xué)習(xí)一下,調(diào)研了幾種現(xiàn)有比較火的熱更新框架,對比了一下優(yōu)劣,最終決定使用HybridCLR來做熱更新,最終目的是要加入到我們已有的項目中,所以肯定要全面實現(xiàn)商業(yè)化,因此有同等需

    2024年02月03日
    瀏覽(20)
  • [游戲開發(fā)][Unity]Assetbundle下載篇(1)熱更前準備與下載AB包清單

    [游戲開發(fā)][Unity]Assetbundle下載篇(1)熱更前準備與下載AB包清單

    打包與資源加載框架目錄 熱更流程都不是固定的,每個人寫的狀態(tài)機也有所差別,但是一些必要步驟肯定不可能少,例如下載清單,對比版本,下載AB包,標記下載完成。我接下來的每一篇文章都是下載AB包的重要步驟,大概率是不能省略的。 檢查沙盒路徑是否存在 檢查下載

    2024年02月15日
    瀏覽(26)
  • 【Unity實戰(zhàn)篇 】| 如何在小游戲中快速接入一個新手引導(dǎo)教程
  • 【Unity實戰(zhàn)篇 】| 2.5D游戲是如何做出來的呢,2.5D游戲快速制作教程

    【Unity實戰(zhàn)篇 】| 2.5D游戲是如何做出來的呢,2.5D游戲快速制作教程

    前言 玩過游戲的朋友都知道,市面上最常見的游戲多數(shù)分為2D和3D兩種。 2D和3D游戲之間的差異大家都知道,一個是類似紙片游戲?qū)儆诙S層面,另一個則是在3D立體空間中游玩。 其中還夾雜著一個 2.5D游戲 ,本篇文章就來講一下怎么通過Unity進行2.5D游戲是怎樣的以及如何制作

    2024年02月12日
    瀏覽(209)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包