Unity ILRuntime热更新(二)

本文详细介绍了如何在Unity中使用ILRuntime实现热更新,包括启动ILRuntime、加载程序集、跨域实例化ILRuntime类对象及调用成员属性的方法,重点推荐了方法二进行实例化和属性访问,以避免GC Alloc并实现高效回收。
摘要由CSDN通过智能技术生成

一、启动ILRuntime并加载程序集

public class Lesson02 : MonoBehaviour
{
   
    private AppDomain _domain;
    private MemoryStream _dllStream;
    private MemoryStream _pdbStream;
    IEnumerator Start()
    {
   
        _domain = new AppDomain();
        _domain.UnityMainThreadID = Thread.CurrentThread.ManagedThreadId;

        //请求Dll
#if UNITY_ANDROID
        UnityWebRequest dllReq = UnityWebRequest.Get(Application.streamingAssetsPath + "/HotFix_Project.dll");am = new MemoryStream();
#else
        UnityWebRequest dllReq = UnityWebRequest.Get("file:///" + Application.streamingAssetsPath + "/HotFix_Project.dll");
#endif
        yield return dllReq.SendWebRequest();
        if(dllReq.result != UnityWebRequest.Result.Success)
            Debug.Log("加载Dll错误!");
        byte[] dllBuffer = dllReq.downloadHandler.data;
        dllReq.Dispose();
        //请求Pdb
#if UNITY_ANDROID
        UnityWebRequest pdbReq = UnityWebRequest.Get(Application.streamingAssetsPath + "/HotFix_Project.pdb");am = new MemoryStream();
#else
        UnityWebRequest pdbReq = UnityWebRequest.Get("file:///" + Application.streamingAssetsPath + "/HotFix_Project.pdb");
#endif
        yield return pdbReq.SendWebRequest();
        if (pdbReq.result != UnityWebRequest.Result.Success)
            Debug.Log("加载Pdb错误!");
        byte[] pdbBuffer = pdbReq.downloadHandler.data;
        pdbReq.Dispose();

        _dllStream = new MemoryStream(dllBuffer);
        _pdbStream = new MemoryStream(pdbBuffer);

        _domain.LoadAssembly(_dllStream,_pdbStream,new PdbReaderProvider());

        print("加载成功!!!");
    }

    private void OnDestroy()
    {
   
        if(_domain != null)
        {
   
            _domain.Dispose(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值