C#Like是Unity的热更方案,使用纯C#语言写出可以热更新的代码,就像可以在所有平台使用DLL(动态链接库)文件一样.遵从KISS设计原则,让用户轻松构建或升级成Unity的热更新项目.
简介
本篇主要介绍如何一步一步地导出官方示范的例子,来验证我们的Unity热更新方案C#Like是真正做到代码和资源全热更新的.
我们的示范包含内置示范例子和2个Unity官方的免费示范例子转化成的可热更新项目,现在把这3个例子分别导出AssetBundle, 然后在一个空白不包含任何游戏代码和资源只包含C#Like免费版和必要依赖库的项目,导出成初始包,按需下载前面导出的AssetBundle, 然后运行游戏.下面是导成WebGL平台的,其他平台类似.
导出步骤:
步骤一:下载资源
在顶部或GitHub或官网都可以下载,下载回来的压缩包CsharpLikeFreeDemo.7z包含子目录:
- 目录CSharpLikeFree : 内置Demo
- 目录TankFree : 已改为热更新项目的Unity官方免费例子"Tanks! Tutorial"
- 目录PlatformerMicrogameFree : 已改为热更新项目的Unity官方免费例子"Platformer Microgame"
- 目录CSharpLikeFreeDemo : 只包含C#Like免费版和必要依赖库的项目,不包含任何游戏代码和资源的初始包,最终导出为"C#Like免费版演示"
步骤二:把3个演示的热更新项目的代码和资源,依次导出为AssetBundle以备用
- CSharpLikeFree:内置Demo
- Unity打开项目CSharpLikeFree,菜单"File"->"Build Settings..."->Platform选中"WebGL"->点击按钮"Switch Platform",切换到WebGL平台
- 菜单"Window"->"C#Like"->"C#Like Setting"->(可选)修改"Download Path"为你自己网页的地址->点击按钮"Rebuild Scripts"
- 最终生成目录"CSharpLikeFree\AssetBundles\CsharpLike",后续步骤会用到该目录
- TankFree:已改为热更新项目的Unity官方免费例子"Tanks! Tutorial"
- Unity打开项目CSharpLikeFree,菜单"File"->"Build Settings..."->Platform选中"WebGL"->点击按钮"Switch Platform",切换到WebGL平台
- 菜单"Window"->"C#Like"->"C#Like Setting"->(可选)修改"Download Path"为你自己网页的地址->点击按钮"Rebuild Scripts"
- 最终生成目录"TankFree\AssetBundles\Tank",后续步骤会用到该目录
- PlatformerMicrogameFree:已改为热更新项目的Unity官方免费例子"Platformer Microgame"
- Unity打开项目CSharpLikeFree,菜单"File"->"Build Settings..."->Platform选中"WebGL"->点击按钮"Switch Platform",切换到WebGL平台
- 菜单"Window"->"C#Like"->"C#Like Setting"->(可选)修改"Download Path"为你自己网页的地址->点击按钮"Rebuild Scripts"
- 最终生成目录"PlatformerMicrogameFree\AssetBundles\MicrogameFree",后续步骤会用到该目录
步骤三:导出初始包CSharpLikeFreeDemo
- Unity打开项目CSharpLikeFree,菜单"File"->"Build Settings..."->Platform选中"WebGL"->点击按钮"Switch Platform",切换到WebGL平台
- 上面3个项目导出的目录复制到目录"CSharpLikeFreeDemo\AssetBundles",现在该目录下包含3个目录"CsharpLike","Tank","MicrogameFree"了
- 菜单"Window"->"C#Like"->"C#Like Setting"->(可选)修改"Download Path"为你自己网页的地址->点击按钮"Merge JSON manually"
- 菜单"File"->"Build Settings..."->点击按钮"Build"
- 最终导出WebGL项目到目录"CSharpLikeFreeDemo/CSharpLikeFreeDemo"
步骤四:发布到你的网页服务器
- 复制前面步骤生成的AssetBundle到目录"CSharpLikeFreeDemo/CSharpLikeFreeDemo",最终文件树如下:
--CSharpLikeFreeDemo |--AssetBundles | |--CsharpLike //这个目录由上上一步骤的步骤1导出目录 | | |--WebGL | | |--code.ab | | |--config.json | | |--cslike.ab | | |--demoscene.ab | | | |--MicrogameFree //这个目录由上上一步骤的步骤3导出目录 | | |--WebGL | | |--code.ab | | |--config.json | | |--microgamefree.ab | | | |--Tank //这个目录由上上一步骤的步骤2导出目录 | | |--WebGL | | |--code.ab | | |--config.json | | |--tanks.ab | | |--*.wav //这些音效文件是原音效压缩过的 | | | |--gamesWebGL.json | |--Build | |--CSharpLikeFreeDemo.data.unityweb | |--CSharpLikeFreeDemo.framework.js.unityweb | |--CSharpLikeFreeDemo.loader.js | |--CSharpLikeFreeDemo.wasm.unityweb | |--TemplateData //这个目录是默认的WebGL框架的图片资源 | |--index.html //这个文件需要屏蔽是否为手机环境的判定,使得在手机浏览器下也能运行
- 把上面文件树目录CSharpLikeFreeDemo发布到你的网页服务器:
- 例如使用Apache作为网页服务器,可以放到"D:\xampp\htdocs\CSharpLikeFreeDemo"
- 例如我的使用KissFramework作为网页服务器,可以放到"C:\MyServer\wwwroot\CSharpLikeFreeDemo"
- 最终使用浏览器访问你的最终WebGL版的C#Like免费版演示.
例如官网的的https://www.csharplike.com/CSharpLikeFreeDemo/index.html
最终目标:
我们通过这个验证了我们不包含任何代码和游戏资源的IL2CPP的初始包,通过AssetBundle下载3个完全独立的游戏项目,做到了热更新代码和资源的功能. 如下面的本系列文章导读,我们一步一步地学习和实践这个热更新框架吧.
本系列文章导读:
- Unity热更新方案C#Like(一)-序言
- Unity热更新方案C#Like(二)-导出官方示范的例子,确认方案可行性
- Unity热更新方案C#Like(三)-详解支持的C#特性:类
- Unity热更新方案C#Like(四)-详解支持的C#特性:委托和Lambda
- Unity热更新方案C#Like(五)-详解支持的C#特性:运算表达式
- Unity热更新方案C#Like(六)-详解支持的C#特性:循环语法
- Unity热更新方案C#Like(七)-详解支持的C#特性:get/set访问器
- Unity热更新方案C#Like(八)-详解支持的C#特性:多线程
- Unity热更新方案C#Like(九)-详解支持的C#特性:Using和命名空间
- Unity热更新方案C#Like(十)-详解支持的C#特性:宏和区域
- Unity热更新方案C#Like(十一)-详解支持的C#特性:枚举
- Unity热更新方案C#Like(十二-详解支持的C#特性:参数修饰符
- Unity热更新方案C#Like(十三)-详解支持的C#特性:函数重载和默认参数
- Unity热更新方案C#Like(十四)-详解支持的C#特性:异常处理
- Unity热更新方案C#Like(十五)-详解支持的C#特性:关键字:unsafe typeof nameof $ @ #pragma #warning #error
- Unity热更新方案C#Like(十六)-详解支持的C#特性:其他杂项:初始值设定项,表达式主体,内联变量声明
- Unity热更新方案C#Like(十七)-详解支持的长链接Socket和WebSocket
- Unity热更新方案C#Like(十八)-详解如何和Unity交互
- Unity热更新方案C#Like(十九)-详解KissJSON:唯一可以在本热更新框架使用的JSON库
- Unity热更新方案C#Like(二十)-详解KissCSV:一个简易实用的CSV表格读取方式
- Unity热更新方案C#Like(廿一)-详解KissFrameworkServer:对应的示范例子和官网所用的服务器框架
- Unity热更新方案C#Like(廿二)-详解内置的例子C#Like Demo:飞机大战,简易聊天室,简易账号/物品/邮件系统
- Unity热更新方案C#Like(廿三)-实战:示范如何把Unity官方免费例子Tanks! Tutorial转成可热更新项目
- Unity热更新方案C#Like(廿四)-实战:示范如何把Unity官方免费例子Platformer Microgame转成可热更新项目
- Unity热更新方案C#Like(廿五)-实战:示范如何建立初始包CSharpLikeFreeDemo项目
- Unity热更新方案C#Like(廿六)-(可选)详解免费版的演示如何升级到完整版的演示