C#Like是Unity的热更方案,使用纯C#语言写出可以热更新的代码,就像可以在所有平台使用DLL(动态链接库)文件一样.遵从KISS设计原则,让用户轻松构建或升级成Unity的热更新项目.
简介
本篇主要介绍C#Like的内置的例子:C#Like Demo. 可以让你熟悉本热更新方案的框架,方便你后面构建新的热更新项目或把已有非热更新的旧项目升级为热更新项目.
搭建的详细步骤
-
创建一个空白的2D/3D项目为CSharpLikeFree
-
到Unity资源商店购买相关的免费资源: 如果已购买的则跳过
- 免费购买C#Like免费版
-
导入相关的免费资源:
- 先打开Package Manager界面 : 菜单'Window'->'Package Manager'
- 导入'C#Like免费版' : 'Packages: My Assets'->'C#LikeFree Hot Update Framework'->'Import'
-
修改产品名称:
- 菜单'Edit'->'Project Settings'->'Player'->'Product Name' 设置为 'CsharpLike'
-
编辑器测试调试
- 如需Visual Studio断点调试代码, 菜单"Window"->"C#Like"->"C#Like Setting"->勾上"is debug mode" 来开启调试模式.
- 调试模式:实际上就是非热更新的模式,采用反射方式调用非热更新的代码,本质就是纯C#代码,所以支持C#的全语法. C#Like完整版因为比免费支持更多C#特性,更加接近调试模式. 即免费版会出现更多调试模式下没问题但非调试模式下有问题的情况.
- 在编辑器里, 打开场景"Assets\C#Like\Scenes\BuildInDemoScene.unity", 然后点'▶'按钮就可以正常运行调试可热更新的场景了.
- 详细测试例子:
- 测试WebSocket或Socket. 一进入场景,就会自动登录到服务器(简易版账号系统),然后服务器发回玩家数据(物品系统和邮件系统),并且打印出来,服务器的源代码在GitHub,客户端的源代码在目录"Assets\C#Like\HotUpdateScripts\Sample\NetObjects"和文件"Assets\C#Like\HotUpdateScripts\Sample\SampleSocket.cs",更详尽介绍在Unity热更新方案C#Like(廿一)-详解KissFrameworkServer:对应的示范例子和官网所用的服务器框架
- "Hello World"按钮. 对应脚本文件:"Assets\C#Like\HotUpdateScripts\Sample\SampleHelloWorld.cs". 最简洁的MonoBehaviour和LikeBehaviour对比,展示基本的生命周期函数:
- 详见链接: 快速了解
- "Interactive Prefab"按钮. 对应脚本文件:"Assets\C#Like\HotUpdateScripts\Sample\SampleInteractivePrefabData.cs". 热更脚本和Unity场景或预制体是如何交互数据的:
- 详见链接: 和Unity交互
- "Test C#"按钮. 展示所支持的C#语法和特性,对应脚本文件:"Assets\C#Like\HotUpdateScripts\Sample\SampleC#\*.cs". 详细请点击下面链接:
- "Aircraft Battle"按钮. 对应脚本目录:"Assets\C#Like\HotUpdateScripts\Sample\AircraftBattle\",对应预制体目录:"Assets\C#Like\Sample\AircraftBattle\". 最早期做的一个飞机大战例子:
- "BattleField.cs" : 是战场场景脚本,基类为LikeBehaviour,负责加载战斗和管理玩家飞机和敌机.
- "Aircraft.cs" : 是对应玩家操控的飞机脚本,基类为LikeBehaviour,负责跟随玩家触碰的位置和发射子弹.
- "Enemy.cs" : 是对应敌机脚本,基类为LikeBehaviour,负责按指定方向飞行和向玩家发射子弹.
- "Bullet.cs" : 是对应子弹脚本,基类为LikeBehaviour,由玩家飞机或敌机射出,碰撞检测后扣血量.
- "Money.cs" : 是对应金钱战利品脚本,基类为LikeBehaviour,由敌机扣血死亡后生成的战利品.和玩家战机靠近后将计算玩家金钱.
- "Chat Room"按钮. 对应脚本文件:"Assets\C#Like\HotUpdateScripts\Sample\SampleChatRoom.cs.cs". 一个简单的聊天室,与服务器交互的例子.进入聊天室获取若干近期的聊天信息并且显示,可以输入聊天信息发送到服务器,服务器广播给在线玩家.
- "Exit"按钮. 退出当前界面,实际上就是加载0号场景
-
导出最终产品AssetBundle
- 菜单"Window"->"C#Like"->"C#Like Setting"->点击按钮"Rebuild Scripts"
- 最终生成目录"CSharpLikeFree\AssetBundles\CsharpLike",同时也会复制到目录"StreamingAssets"
- "CSharpLikeFree\AssetBundles\CsharpLike\WebGL\code.ab" : 是包含二进制代码文件的AssetBundle
- "CSharpLikeFree\AssetBundles\CsharpLike\WebGL\cslike.ab" : 是包含资源(预制体)的AssetBundle
- "CSharpLikeFree\AssetBundles\CsharpLike\WebGL\demoscene.ab" : 是包含资源(场景)的AssetBundle
- "CSharpLikeFree\AssetBundles\CsharpLike\WebGL\config.json" : 是ResourceManager用到的配置JSON文件,作用类似manifest文件
本系列文章导读:
- 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(廿六)-(可选)详解免费版的演示如何升级到完整版的演示