【Unity実戦】【C#実戦】HybridCLR Wlong 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をインストールする
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となっており、シンプルな動作を実現していますシミュレートされたホット アップデート。