当前位置:   article > 正文

[Unity实战][C#实战]HybridCLR(wolong)卧龙C#热更框架v2.0.x-Unity2020.3.21f1_unity wolong

unity wolong

1.官方文档

在这里插入图片描述
官网介绍
HybridCLR(代号wolong)是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案。

HybridCLR扩充了il2cpp的代码,使它由纯AOT (opens new window)runtime变成‘AOT+Interpreter’ 混合runtime,进而原生支持动态加载assembly,使得基于il2cpp backend打包的游戏不仅能在Android平台,也能在IOS、Consoles等限制了JIT的平台上高效地以AOT+interpreter混合模式执行。从底层彻底支持了热更新。

HybridCLR开创性地实现了 Differential Hybrid Execution(DHE) 差分混合执行技术。即可以对AOT dll任意增删改,会智能地让变化或者新增的类和函数以interpreter模式运行,但未改动的类和函数以AOT方式运行,让热更新的游戏逻辑的运行性能基本达到原生AOT的水平。

2.无缝简单接入

2.1安装unity2020.3.21f1

unity官网

unityhub://2020.3.21f1/a38c86f6690f
  • 1

2.2安装HybridCLR

官网安装详情

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

在这里插入图片描述
安装好后如图出现插件选择,继续点击Installer
在这里插入图片描述
安装基础的build工具包
在这里插入图片描述

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);
    }
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

可以修改的MyHotfix.cs --> 一次是2一次是3,自己改下就行了

public class MyHotfix
{
    public static int Version()
    {
        return 3;
    }
    public static void Main()
    {
        UnityEngine.Debug.Log("Hello,Hotfix3!");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.4HybridCLR->CompileDll

在这里插入图片描述选择全平台然后打包
在这里插入图片描述
复制到目录下的Resources文件夹下
在这里插入图片描述
改名如图
在这里插入图片描述

3.简单测试热更dll的效果

选中所有的,等于完全不开启ScriptsHotfix在Editor中的运行
在这里插入图片描述
此时运行如图
在这里插入图片描述
此时看图,一次是2一次是3,这样就实现了简单模拟热更了
在这里插入图片描述

4.Github

Github

5.TODO-Assetbundles/安卓下载+替换热更dll实现完全热更

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/687015
推荐阅读
相关标签
  

闽ICP备14008679号