开始使用
该文章将告诉您如何初步使用JEngine
开发环境
Unity版本:2019.3.13f1 (请使用该版本及以上)
U3D工程.net环境: .Net Framework 4.x
热更工程.net环境: .Net Framework 4.x
开发系统:MacOS 10.15.5
100%支持Windows
下载方式-非常重要
因为JEngine使用了Git的Submodule模块来安装子模块,下载本框架源码不推荐直接从网站下载zip,目前有3种下载方式:
方法一,直接下载
直接在GitHub主页(或Release的地方)下载zip,下载完成后进入UnityProject/Assets/Dependencies,解压里面的zip(zip下载必看)
或通过
git clone
直接克隆的(不是方法三,没最后那个参数的),也需要在克隆完成后进入UnityProject/Assets/Dependencies,解压里面的zip(zip下载必看)方法二,先
git clone
再安装子模块git clone git@github.com:JasonXuDeveloper/JEngine.git cd JEngine git submodule init git submodule update
方法三,git clone的时候顺带安装子模块 ---- 推荐
git clone git@github.com:JasonXuDeveloper/JEngine.git --recursive
注,这里的github地址可以换为gitee地址
如果安装submodule的时候报错了,则需要配置Github(或Gitee)的ssh key
修改.Net版本
在Unity的PlayerSetting下,将API Compatibility Level
修改为.NET 4.X
即可
注意,Unity 2021开始,
API Compatibility Level
选项只有Net Standard 2.0
以及Net Framework
,选择后者即可,只要不是Net Standard 2.x
就行
目录结构
该结构是UnityProject目录内的结构,非热更工程的目录结构都可以凭个人喜好决定是否遵守
Unity工程
- Assets - Unity工程根目录
- Dependencies - JEngine用到的一些第三方插件,更新时替换该目录内相关的插件
- HotUpdateResources - 所有热更资源将存放在这里
- AddOns - 分包
- AddOn1 - 分包1
- Controller - 动画
- Dll - 该目录存放热更代码
- Material - 材质
- Prefab - 预制体
- Scene - 场景
- ScriptableObject - Unity的可程序化物件
- TextAsset - 文本资源
- UI - 图片资源
- Other - 其他任意东西,只要能被加载的都可以丢在这里
- AddOns - 分包
- Scripts - 无法热更新的代码
- InitJEngine.cs&LoadILRuntime.cs - 十分重要的文件,用于启动游戏,每次更新必须替换该2个文件
- Helpers - 助手类文件夹,包含ILRuntime注册代码
- Adapters - 适配器类文件夹,生成ILRuntime适配器后会创建此文件夹,包含ILRuntime的适配器,用于热更工程继承本地接口和类
- APIs - 往该文件夹里放您的代码
- Init.unity - 启动游戏的场景
生成目录
- Builds - 生成的客户端可以放在这里
热更资源生成目录
- DLC - 热更资源导出目录
- EncryptsAssets - 加密热更资源导出目录
热更代码目录
- HotUpdateScripts - 热更代码项目
- Program.cs - 启动游戏的代码, 你可以更改里面的东西,但请不要删除或更改该脚本的SetupGame和RunGame方法
- JEngine - 请勿删除,JEngine部分源码在里面,每次更新覆盖该目录
- Examples - JEngine的Demo源码
快速开始
请按照以下顺序进行操作
- 下载该项目,记得有可能需要解压文件,不然会报错
- 将项目的UnityProject目录用Unity打开
- 首次打开会生成个lock文件到Assets目录下,请勿删除,同时还会弹出来一个提示,这个提示记得读一下
- 找到HotUpdateResources/Scene, 确保你能找到Game.unity,并且HotUpdateResources/DLL/~Hidden文件夹中有生成的DLL文件(这个文件夹Unity内看不见)
- 导入后不应该有报错,如果还有报错,请看常见问题
- 无需进行任何修改,尝试在不同的模式运行自带的Demo,注意留意控制台
- 这个时候就可以打开热更工程了,也就是
path/to/JEngine/UnityProject/HotUpdateScripts
目录,用IDE(推荐vs或rider,因为vscode需要自己配dotnet build来编译)打开里面的sln文件 - 修改热更工程,例如在
Program.cs
的RunGame
方法内加个Log - 编译热更工程,如果出现问题(例如跳过),请看常见问题
- 尝试打包热更资源,记得部署资源
- 执行CLR绑定(菜单栏,
JEngine/ILRuntime/CLR Bind
),这一步不做的话在IL2CPP出包后必定出问题 - 尝试打包游戏(APK、EXE等),注意打包事项
- 现在,运行游戏,即可体验热更功能!
到这里,您已经完成了热更游戏的第一步,恭喜!
打包事项
生成项目的时候,为了避免冗余,请手动删除热更场景(开发模式会自动将热更场景加入Build Settings)

运行模式
TIP
JEngine可以使用三种模式运行游戏,分别是:开发模式,离线模式,真机模式
开发模式
- 直接编辑器下运行游戏
- 尝试修改热更代码并编译,或修改热更资源,回到步骤1,尝试实现热更
离线模式
- 参考打包热更资源打出AB包
- 在Unity编辑器菜单栏选择Tools/BuildAsset/Copy资源到StreamingAssets
- 控制台输出复制成功后,进入Init场景,将
Updater
的Mode
设置为Local
- 尝试运行游戏
- 尝试修改热更代码并编译,或修改热更资源,回到步骤1,尝试实现热更
真机模式
参考打包热更资源打出AB包
在资源服务器上创建DLC目录
- 如果未开启AB加密(默认),就将UnityProject/DLC内的文件上传到资源服务器的DLC目录下
- 如果开启了AB加密(需要自己配置),就将UnityProject/EncryptAssets内的文件上传到资源服务器的DLC目录下
进入Init场景,将将
Updater
的Mode
设置为Build
将
Updater
的BaseURL
设置为http(s)://资源服务器地址/DLC
尝试运行游戏
TIP
- 资源服务器上创建的目录名字可以随意,但是
Updater
的BaseURL
的地址必须是服务器上创建的文件夹的名字结尾 - 不论资源服务器上创建的目录是什么名字,打包热更资源后都应该根据是否使用加密将
UnityProject/DLC
或UnityProject/EncryptAssets
下的文件上传上去 - 如果打了AB后通过菜单栏工具将其复制到了
StreamingAssets
,那么真机模式下会基于StreamingAssets
内的资源进行增量热更
- 资源服务器上创建的目录名字可以随意,但是
尝试修改热更代码并编译,或修改热更资源,回到步骤1,尝试实现热更