[Unity 実践戦闘][C# 実践戦闘]HybridCLR (wolong) Wolong C# ホット アップデート フレームワーク v2.0.x-Unity2020.3.21f1

1.公的書類

ここに画像の説明を挿入します
公式 Web サイトでは、
HybridCLR (コード名 wolong) が、完全な機能、ゼロコスト、高パフォーマンス、低メモリを備えた、ほぼ完璧な Unity フルプラットフォームのネイティブ C# ホット アップデート ソリューションとして紹介されています。

HybridCLR は、il2cpp のコードを拡張し、純粋な AOT (新しいウィンドウが開きます) ランタイムから「AOT+インタープリター」ハイブリッド ランタイムに変更し、アセンブリの動的読み込みをネイティブにサポートするため、il2cpp バックエンドに基づいてパッケージ化されたゲームは実行できるだけでなく、 Android プラットフォームだけでなく、JIT を制限する IOS やコンソールなどのプラットフォーム上で、AOT + インタプリタ混合モードで効率的に実行します。ホット アップデートはボトムアップで完全にサポートされます。

HybridCLR は、Differential Hybrid Execution (DHE) 差動ハイブリッド実行テクノロジの実装の先駆者です。つまり、AOT dll を自由に追加、削除、または変更でき、変更または新しく追加されたクラスと関数はインタプリタ モードでインテリジェントに実行されますが、変更されていないクラスと関数は AOT モードで実行されます。そのため、最新のゲーム ロジックの実行パフォーマンスは基本的に元のレベル (AOT レベル) に達することができます。

2. シームレスかつ簡単なアクセス

2.1 Unity2020.3.21f1をインストールする

Unity公式サイト

unityhub://2020.3.21f1/a38c86f6690f

2.2 HybridCLRのインストール

公式サイトのインストール詳細

https://gitee.com/focus-creative-games/hybridclr_unity.git

ここに画像の説明を挿入します
インストール後、図に示すようにプラグインの選択が表示されます。引き続き「インストーラー」をクリックして
ここに画像の説明を挿入します
、基本的なビルド ツール パッケージをインストールします。
ここに画像の説明を挿入します

2.3 テストコードの追加

ここに画像の説明を挿入します

MyScripts.cs

using System;
using System.Linq;
using System.Reflection;
using UnityEngine;

public class MyScripts : MonoBehaviour
{
    private void Awake()
    {
        LoadDll();
    }

    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("Hello!");
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    void LoadDll(){
        // 从 Resources 加载 .bytes 文件中的字节数组
        byte[] bytes = Resources.Load<TextAsset>("ScriptsHotfix.dll").bytes;
        Assembly assembly = Assembly.Load(bytes);

        Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
        Assembly ass = AppDomain.CurrentDomain.GetAssemblies().First(assembly => assembly.GetName().Name == "ScriptsHotfix");
        // 通过反射加载 DLL
        Type type = ass.GetType("MyHotfix");
        MethodInfo method = type.GetMethod("Version");
        int version = (int)method.Invoke(null, null);
        Debug.Log(version);
    }
}


変更できる MyHotfix.cs --> 1 回は 2、1 回は 3 です。自分で変更してください。

public class MyHotfix
{
    public static int Version()
    {
        return 3;
    }
    public static void Main()
    {
        UnityEngine.Debug.Log("Hello,Hotfix3!");
    }
}

2.4ハイブリッドCLR -> コンパイルDll

ここに画像の説明を挿入しますプラットフォーム全体を選択してパッケージ化し、
ここに画像の説明を挿入します
ディレクトリ内の Resources フォルダーにコピーし、
ここに画像の説明を挿入します
図に示すように名前を変更します。
ここに画像の説明を挿入します

3. ホット アップデート DLL の効果を簡単にテストします。

全て選択すると、エディタ上でScriptsHotfixを全く実行しないのと同じことになりますが、
ここに画像の説明を挿入します
この時は
ここに画像の説明を挿入します
図のように動作します この時の図を見ると、一度2、再度3となっており、シンプルな動作を実現していますシミュレートされたホット アップデート。
ここに画像の説明を挿入します

4.Github

ギットハブ

5.TODO-Assetbundles/Android をダウンロードし、ホット アップデート DLL を置き換えて、完全なホット アップデートを実現します。

おすすめ

転載: blog.csdn.net/aaaadong/article/details/129593001