热更新的逻辑:热更新的那部分内容其实就是一个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. Diary -「联合省选 2023」鸢尾

    零   她们诞生于那样一段迷茫的时期,她们总是一个唱着虚幻的梦呓,一个哼着现实的词曲.   「平行的世界 / 另一个 / 我是怎样的」?如果那时的,虚幻的歌者没有妥协,现在的她会是怎样的人呢?   我 ...

  2. JAVA8 函数式编程(1)- Lambda表达式

    1 简介 简洁的代码就能处理大型数据集合,让复杂的集合处理算法高效的运行在多核CPU上. 面向对象编程是对数据进行抽象,而函数式编程是对行为进行抽象,能编写出更易读的代码--这种代码更多地表达了业务逻 ...

  3. Go语言【Gin框架】:JSON、AsciiJSON、PureJSON和SecureJSON的区别

    在Go语言中,JSON.AsciiJSON.PureJSON 和 SecureJSON 是Gin框架用于发送JSON响应的方法. 1. c.JSON 功能:将提供的数据序列化为标准的JSON格式,并将 ...

  4. java注释转json插件开发实战

    目的 将java的代码注释转换为json格式,并写入文件 本文介绍了完整的开发流程及如何使用 运行环境 jdk1.8 maven3.x 设计思想 系统构思 编译完成的class里没有注释的,所以注释信 ...

  5. Apache Camel系列(2)----Hello World

    下面创建一个Apache Camel的Hello World程序,该程序使用Maven,Intellij 15,运行环境是JDK 8.   1,创建一个maven工程,在pom.xml文件中添加apa ...

  6. [翻译] 为什么 Tracebit 用 C# 开发

    原文: [Why Tracebit is written in C#] 作者: [Sam Cox (Tracebit联合创始人兼CTO)] 译者: [六六] (译注:Tracebit成立于2022年, ...

  7. vim编译和安装clang_complete插件

    今天找到一个插件clang_complete可以进行语法补全,可能不是很好用.但是vim上用应该也差不多了 全文按照这个链接去操作, configure的时候我配置的目录是/usr/bin/vimv8 ...

  8. [CF576E] Painting Edges 题解

    模版题的升级了. 使用二分图经典判定方法(一个点拆成两个点 \(x,x+n\),连边 \((x,y)\) 就是连接 \((x,y+n),(x+n,y)\),那么是否是二分图就等价于判断 \(x,x+n ...

  9. SWD下载口的端口状态

    1.关于SWD SWD下载口的端口状态:SWD为上拉,SWC为下拉. SWD是MCU下载程序和调试的端口,分为四线制和五线制 四线制:VCC GND SWDIO SWCKL 五线制:VCC GND S ...

  10. MySQL - [16] SSL

    MySQL8的SSL功能可以帮助用户更安全地管理数据库,提高数据安全性. 一.SSL概念 SSL(Secure Socket Layer:安全套接字)利用数据加密,身份验证和消息完整性验证机制,为基于 ...