热更新的逻辑:热更新的那部分内容其实就是一个dll的库文件,到时候修改也是改这个库文件;

我们只需要在主工程(我们的Unity项目)中引入并调用这个dll库里的代码就行了。

首先我们需要在Unity中的

窗口-包管理器中导入ILRunTime

如果找不到请参阅官方文档(介绍 — ILRuntime (ourpalm.github.io)

之后

导入Demo

此时若有报错,应当打开:允许不安全代码命令(在编辑-项目设置-player-允许不安全代码)

导入的Demo长这样

而如果我们要打开一个项目,比如这个helloworld

你就会发现:

报错啦

为什么呢?

因为在引入热更新概念后,原本的Unity游戏被划分成了两部分,一部分是游戏的主体,这个是变不了的,叫做Unity主工程

而我们要进行热更新的那部分,叫做热更工程,被放在了HotFix_project.dll中

而热更工程是要生成(在VS中生成-生成解决方案)之后才存在的(我们要找到其中的dll库),现在我们找不到这个库,就报错了。

这个是热更的基本流程


其中LoadHotFixAssembly()是一个协程,会在Unity生命周期中的Start时被开启

然后第一步,读取dll文件

将这个热更dll文件读取到一个叫做热更脚本解释器(也就是热更新脚本引擎)的地方

再去初始化脚本引擎

最后执行相关逻辑

顺便要说一下逻辑就像下面这张图一样,文件夹结尾是~的在Unity当中属于隐藏文件,不会被Unity编辑器读取到:

所以

这种加了“~”的文件夹,就可以放我们的热更新的代码

没有~的文件夹就和普通的文件一样,作为游戏的主体正常运行

说一下总结,Unity的场景独自搭建,然后有相关脚本调用热更的dll库,而热更新的部分就是这个dll库(在ILRunTime中这个库叫做HotFix_Project.dll)[那个库被放在了{Demo/HotFix_Project~}里]

在Unity中实现(纯C#)热更新--使用ILRunTime{学习日志}的更多相关文章

  1. 热更新解决方案--xlua学习笔记

    一.热更新方案简介 在Unity游戏工程中,C#代码(编译型语言)资源和Resources文件夹下的资源打包后都不可以更改,因此这部分内容不能进行热更新,而lua代码(解释型语言)逻辑不需要进行预编译 ...

  2. 热更新解决方案--tolua学习笔记

    一.tolua使用准备工作:从GitHub上下载tolua(说明:这篇笔记使用的Unity版本是2019.4.18f1c1,使用的tolua是2021年4月9日从GitHub上Clone的tolua工 ...

  3. 对C#热更新方案ILRuntime的探究

    转载请标明出处:http://www.cnblogs.com/zblade/ 对于游戏中的热更,目前主流的解决方案,分为Lua(ulua/slua/xlua/tolua)系和ILRuntime代表的c ...

  4. unity3d热更新插件uLua学习整理

    前言 IOS不能热更新,不是因为不能用反射,是因为System.Reflection.Assembly.Load 无法使用System.Reflection.Emit 无法使用System.CodeD ...

  5. 热更新基础--AssetBundle学习笔记

    一.简介 AssetBundle简称AB包,特定平台的资产压缩包(包括模型.贴图.预设体.音效.材质球等资产). 作用:Resources下的资源只读且打包后不可修改,而AB包存储位置自定,后期可以动 ...

  6. 热更新语言--lua学习笔记

    一.lua安装和编程环境搭建 lua语言可以在官网:http://luadist.org/下载安装包安装,编程IDE之前学习使用的是SciTE(https://www.cnblogs.com/movi ...

  7. [Unity框架]资源管理02:热更新

    这里可以分成资源打包.资源更新下载.资源加载卸载3个部分 一.资源打包 参考链接: https://blog.uwa4d.com/archives/TechSharing_59.html https: ...

  8. unity中利用纯物理工具制作角色移动跳跃功能

    using System.Collections;using System.Collections.Generic;using UnityEngine; public class Player : M ...

  9. unity 热更新方案ILRuntime

    https://github.com/meta-42/ILRuntime 教程 https://ourpalm.github.io/ILRuntime/public/v1/guide/index.ht ...

  10. java web开发中遇到的问题及解决方案(个人学习日志,持续更新)

    转:http://blog.csdn.net/ducexu/article/details/7529613 2012.05.02   星期三 1.问题:导入的新工程,名字上出现感叹号. 原因:工程的j ...

随机推荐

  1. 高通Android工程释放ADSP侧GPIO给AP侧(HLOS)解决uart只能收或者发,gpio 无法配置成输入或者输出

    在许多sensor的调试过程中总是会遇到各种GPIO被占用的情况,特别是以下几种情况:UART 只能发或收,GPIO 配置了pinctl output但是gpio依旧为输入. 1.判断GPIO口状态 ...

  2. CDS标准视图:催款范围描述 I_DunningAreaText

    视图名称:催款范围描述 I_DunningAreaText 视图类型: 视图代码: 点击查看代码 @EndUserText.label: 'Dunning Area - Text' @Analytic ...

  3. CyclicBarrier底层实现和原理

    1.CyclicBarrier 字面意思是可循环(Cyclic)使用的屏障(Barrier).它要做的事情是让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时候,屏障才会开门.所有被 ...

  4. Java多进程多线程处理详解

    在Java编程中,多进程和多线程是两种常见的并发编程技术,用于提高程序的执行效率和响应速度.本文将详细介绍Java中的多进程和多线程处理,包括理论概述和代码示例.通过本文,你将了解如何在Java中实现 ...

  5. 轮播图,swiper使用

    背景: 最近接到一个需求,重写首页,需要用到轮播图. 但是轮播图只用两张图,此为前提. 本想直接用ElementUI的走马灯,但是只用两张图的情况下,走马灯不能循环播放,只能来回播放,公司的UI小姐姐 ...

  6. oracle数据导入导出,备份还原命令expdp&impdp(只导出元数据,不导出表数据,最全,最完善的步骤)

    感谢金龙鱼先生分享,原文来自https://blog.csdn.net/kou869929526/article/details/125791113 一,编码要求以及数据库版本要求 检查数据库版本(用 ...

  7. 使用TUniSQLMonitor监视SQL语句执行的耗时

    //代码来自官方论坛type TUniSqlMonitorEx = class(TUniSqlMonitor) private FExecuteDuration: Cardinal; FFinalEv ...

  8. C#正则提取字符串中的数字

    首先需要引入命名空间System.Text.RegularExpressions,具体实现如下所示: //提取纯数字,该方式会将所有数字提取出来并拼接在一起,如:"ABC#123@AS456 ...

  9. Q:su命令无法切换用户问题,密码正确可登录

    一.文件权限问题 查看文件权限: ll -a /bin/su /usr/bin/passwd 正确的结果为: 错误的结果为: suid和普通x执行权限 s:当普通用户使用su的时候,采用的是owner ...

  10. CSP 2024 游记

    初赛 Day -1 唐,rp--了. 上午语文正卷满分,然后作文挂完了靠.我没想到我作文能挂到 40pts. 吃饭的时候 gcy 说了什么奇怪的东西,然后喷饭爆金币了,社死现场.吃饭的时候还 tm 咬 ...