unity python热更新_Unity C#热更新方案 ILRuntime学习笔记(一) Hello World

本文介绍了ILRuntime,一个用于Unity的C#热更新方案,对比了它与lua的区别。通过示例展示了如何下载、导入ILRuntime,以及创建和调用热更新代码。最后实现了一个简单的Hello World demo,帮助理解ILRuntime的工作原理。
摘要由CSDN通过智能技术生成

一、ILRuntime介绍

问:什么是热更新?

答:软件在使用时就能实现更新的方式就叫做热更新。热更新无需用户重新下载安装或重启,在使用时即可更新,方便快捷体验良好。

问:什么是ILRuntime?

答:ILRuntime是一个C#热更新方案。ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速、方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新

问:lua 和 ILRuntime哪个热更新方案更好?

答:如果你的团队更熟悉lua,就用lua。如果你的团队更熟悉C#就用ILRuntime。如果你是主程,你可以选择自己喜欢的方案,但是要肩负起填坑的责任。

我个人的感觉是:lua在Unity中用起来很难受,不是lua这门语言不好,而是因为在Unity中官方的开发语言是C#。用lua就意味着开发者要会两种语言,学习和开发成本都高,而且因为C#是强类型、面向对象的语言。lua是弱类型,非面向对象的语言。

lua从编程思想和代码写法都和C#有较大差距,这一点在面对越大的项目时感受越明显,项目小的时候觉得lua还好,项目做大了以后会发现lua带给你的麻烦会大于便利。

而ILRuntime方案是基于C#的,开发语言统一,编码更容易。不过他的缺点是实际经过验证的项目还是太少了,不太成熟,可能有很多坑需要填,不像是经过很多项目验证的lua,有比较成熟的方案。

二、下载ILRuntime

先去GitHub上点个赞,支持一下该项目,再去Unity Demo上把项目下载下来,顺便也点个赞。

如果国外地址下载慢,可以在国内码云上下载Demo。

c2d47ec6ad4c99e56b4fefaf508c9c76.png

三、导入ILRuntime

1.解压缩Unity Demo

打开Unity工程目录下的ProjectSettings/ProjectVersion.txt 查看工程版本。

为了避免因为不同版本导致的兼容问题,工程版本和Unity版本尽量保持一致,我下载的Demo工程版本是2019.3.6f1, 我尽量用2019.3.6 或稍微高一点儿的版本导入。

20cde4f78d072f16399c7911cd2cbad0.png

2.目录结构

工程导入完毕,看下目录结构。

Demo目录:

在Samples/ILRuntime/1.6.2/Demo/_Scenes/Examples文件夹下

e60bf83a8c36a17ce8a67194045847eb.png

热更新加载的代码目录:

热更新代码会从StreamingAssets目录下加载编译后的dll

其中mdb和pdb文件都是调试时用的,发布时只需要dll。

f857d885cd2ea096289c0e51eb8ea92f.png

运行Hello World Demo:

打开并运行 01_Hello World 场景。可以看到控制台输出了如下结果。

2c1e391835ff7ac0b7d503c650bac62b.png

ILR是如何工作的呢?看下HelloWorld脚本。

using UnityEngine;

using System.Collections;

using System.IO;

using ILRuntime.Runtime.Enviorment;

public class HelloWorld : MonoBehaviour

{

//AppDomain是ILRuntime的入口,最好是在一个单例类中保存,整个游戏全局就一个,这里为了示例方便,每个例子里面都单独做了一个

//大家在正式项目中请全局只创建一个AppDomain

AppDomain appdomain;

System.IO.MemoryStream fs;

System.IO.MemoryStream p;

void Start()

{

StartCoroutine(LoadHotFixAssemb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值