在Unity中实现(纯C#)热更新--使用ILRunTime{学习日志}
热更新的逻辑:热更新的那部分内容其实就是一个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{学习日志}的更多相关文章
- 热更新解决方案--xlua学习笔记
一.热更新方案简介 在Unity游戏工程中,C#代码(编译型语言)资源和Resources文件夹下的资源打包后都不可以更改,因此这部分内容不能进行热更新,而lua代码(解释型语言)逻辑不需要进行预编译 ...
- 热更新解决方案--tolua学习笔记
一.tolua使用准备工作:从GitHub上下载tolua(说明:这篇笔记使用的Unity版本是2019.4.18f1c1,使用的tolua是2021年4月9日从GitHub上Clone的tolua工 ...
- 对C#热更新方案ILRuntime的探究
转载请标明出处:http://www.cnblogs.com/zblade/ 对于游戏中的热更,目前主流的解决方案,分为Lua(ulua/slua/xlua/tolua)系和ILRuntime代表的c ...
- unity3d热更新插件uLua学习整理
前言 IOS不能热更新,不是因为不能用反射,是因为System.Reflection.Assembly.Load 无法使用System.Reflection.Emit 无法使用System.CodeD ...
- 热更新基础--AssetBundle学习笔记
一.简介 AssetBundle简称AB包,特定平台的资产压缩包(包括模型.贴图.预设体.音效.材质球等资产). 作用:Resources下的资源只读且打包后不可修改,而AB包存储位置自定,后期可以动 ...
- 热更新语言--lua学习笔记
一.lua安装和编程环境搭建 lua语言可以在官网:http://luadist.org/下载安装包安装,编程IDE之前学习使用的是SciTE(https://www.cnblogs.com/movi ...
- [Unity框架]资源管理02:热更新
这里可以分成资源打包.资源更新下载.资源加载卸载3个部分 一.资源打包 参考链接: https://blog.uwa4d.com/archives/TechSharing_59.html https: ...
- unity中利用纯物理工具制作角色移动跳跃功能
using System.Collections;using System.Collections.Generic;using UnityEngine; public class Player : M ...
- unity 热更新方案ILRuntime
https://github.com/meta-42/ILRuntime 教程 https://ourpalm.github.io/ILRuntime/public/v1/guide/index.ht ...
- java web开发中遇到的问题及解决方案(个人学习日志,持续更新)
转:http://blog.csdn.net/ducexu/article/details/7529613 2012.05.02 星期三 1.问题:导入的新工程,名字上出现感叹号. 原因:工程的j ...
随机推荐
- 《深入理解Mybatis原理》MyBatis数据源与连接池详解
MyBatis数据源DataSource分类 MyBatis把数据源DataSource分为三种: UNPOOLED 不使用连接池的数据源 POOLED 使用连接池的数据源 JNDI 使用JNDI实现 ...
- ASP6.0 (VB) 获取目录下所有图片文件
<% 'Desc : ASP6.0 (VB) 获取目录下所有图片文件 'by : wgscd 'date : 2024-2-1 dim c_path c_path=Server.MapPath( ...
- VS2022 没有MAUI模板的解决方法
原来是要安装 VS 2022 Preview 就是预览版.正式版还没有MAUI..... 以下的尝试都是蛋疼,没有卵用. 命令行窗口输入:dotnet workload install maui VS ...
- 第六章 dubbo源码解析目录
13.1 dubbo服务降级源码解析 从 9.1 客户端发起请求源码 的客户端请求总体流程图中,截取部分如下: //代理发出请求 proxy0.sayHello(String paramString) ...
- DevOps和云计算初识
什么是云计算分类 公有云:云服务提供商对基础设施实施维护,不需要自己维护:多租户:Pay For Use 成本较低,按需付费就像用水用电一样(阿里云.腾讯云等)私有云:自己维护云基础设施:单租户或狭义 ...
- 分布式多级缓存(本地缓存,redis缓存)
结构包: 使用案例: 实现效果: 1.基本并发的本地缓存,基于分布式轻量级锁的redis缓存 2.热缓存(高频访问持续缓存)+快速过期(本地缓存2秒,redis缓存10秒) 3.方法级别缓存清理 (@ ...
- bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩
最近项目要用到定期批量将文件及文件夹下的文档打包,所以想到要写脚本来实现,然后做Windows定期任务调用.bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩. 调用WinRAR来实现 因 ...
- Docker开发实践:在windows 7中使用Docker for windows访问GUI
1 安装Docker for windows 1.1下载Docker for windows 从下面的网址中下载Docker for windows并安装. https://www.docker.co ...
- ctfshow 红包题第七弹 .git
.git源码泄露 发现有后们 flag在上级目录里面 直接Letmein=show_source('../flag.txt');就出来了
- dart类型转换和类型判断
1==>dart运算符 + - * / ~/ 这个取整 %(取余) var a1 = 10; var b2 = 3; print(a1 ~/ b2);//输出的值是三 02==>比较运算符 ...