# cframework_xlua **Repository Path**: Wnity/cframework_xlua ## Basic Information - **Project Name**: cframework_xlua - **Description**: 支持对MonoBehaviour和ScriptableObject增加可序列化field的lua热更框架 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-08 - **Last Updated**: 2025-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目目的 - 快速接入 [xlua](https://github.com/Tencent/xLua.git) ,让热更初学者更快熟悉热更流程,供对热更有兴趣的同学学习
# demo [zhuarong](https://gitee.com/Wnity/zhuarong)
# 功能 - **加入[zserialize](https://gitee.com/Wnity/SerializeEx.git),使对MonoBehaviour和ScriptableObject增加可序列化field时支持lua热更** - 一键打包热更的代码包、资源包、app - 可更新热更逻辑和游戏逻辑 - 自动检测热更代码和资源包是否兼容旧版app - 各平台独立发版配置,规范不同平台或渠道的发版流程 - 附带测试用的本地http服务器,无需另行建服务器测试 - 支持ali oss存储热更数据,支持蒲公英app管理平台,可根据项目扩展更多功能 - 发版后可手动改版本信息和白名单设备 - 发版优化检查是否配置好工具或属性并提示,避免发版过程才发现问题
# unity版本 - 2021.3.x+ - 其他版本请自行测试
# 发版(以win64为例,其他平台同理): - **要使用zserialize的话,先点击菜单项zserialize->SerializeAllScript** - 在unity中打开BuildPlayerSettings/publish目录,右键点击win64_dev,选择cframework_xlua->BuildPlayer->Build,发完版后会弹框提示 - 发版有问题时会提示,根据提示操作,缺失命令行工具配置等等 - 发版成功会弹框提示下载地址,复制后在浏览器打开 - 支持android,ios,webgl,mac,windows平台
# 教程视频 - [https://www.bilibili.com/video/BV1jT421i7Kg/?vd_source=6cfd43a533c661fdd7e8df80d3b7ecc5](https://www.bilibili.com/video/BV1jT421i7Kg/?vd_source=6cfd43a533c661fdd7e8df80d3b7ecc5)
# 关于zserialize **使用菜单项zserialize->SerializeAllScript后,会把相关的prefab,scriptableobject和场scene里的相关脚本数据序列化成字典(FieldDictionary),具体请看[https://gitee.com/Wnity/SerializeEx.git](https://gitee.com/Wnity/SerializeEx.git)**
# 集成到自己的项目 - 按xlua的教程把xlua拷到自己的项目 - 把下面的package添加到项目的Packages/manifest.json ``` "com.wnity.zserialize": "https://gitee.com/Wnity/SerializeEx.git?path=Assets/zserialize", "com.wnity.cframework_xlua": "https://gitee.com/wnity/cframework_xlua.git?path=Assets/cframework_xlua", ``` - 拷贝Assets/fwdata到自己的项目里 - 发版
# 发版配置说明 BuildPlayerSettings/publish/ android_*:android发版配置 ios_*:ios发版配置 webgl_*:webgl发版配置 mac_*:mac发版配置 win32_*:win32发版配置 win64_*:win64发版配置 webgl_wechat_*:微信小程序发版配置 BuildPlayerSettings/config/ HotUpdateBuildSettings:app设置 ChannelUtil_*:渠道工具,用来发布app DeviceToolPathSetting:设备工具路径配置,以设备名为key,记录不同设备的工具的路径 FileSystemUtil_*:文件系统工具,上传和下载热更文件的工具 PublishUtil_*:发布工具,不同平台的发布流程不一样,需要不同的工具
# 菜单工具说明 cframework_xlua AddressableTool->build:测试addressable发版 SCM->RestoreAndCleanAllChanges:回滚和清除所有修改 HttpServer->Stop:停http服务器 InitFramework: 集成框架到项目时用来配置框架 Assets->cframework_xlua BuildPlayer Build:构建发版 CheckEssential:检查必须的工具和字段 SwitchPlatform:切换平台 HttpServer Start:开启http服务器,供客户端热更 PythonHttpServer Start: 开启python的http服务器,供客户端热更

# dll说明 - cframework_xlua.dll:供游戏逻辑dll用的框架 - BaseLaunchHotUpdate.dll,LaunchHotUpdate.dll:启动逻辑的dll - BaseHotUpdate.dll,HotUpdate.dll:热更逻辑功能基类的dll - Assembly-CSharp.dll:游戏逻辑,可热更
# ScriptableObject说明 - HotUpdateAppSettings: App配置,有app name,生成路径等 - ChannelUtil: 渠道工具,不同渠道的上传方法不一样,有蒲公英,apple store,微信,本地文件系统 - DeviceToolPathSetting: 工具路径配置,可在这里对不同发版机器进行不同的工具路径配置 - FileSystemUtil: 文件系统工具,用来对oss或文件系统的文件进行保存和读取,有oss,本地方件系统和本地http服务器文件系统 - PublishUtil: 发布工具,不同平台需要发布的流程不一样 - BuildPlayerSettings: 发版配置,针对每个平台一份
# 项目用的框架数据和资源 Assets/fwdata: 热更框架需要的资源 BuildPlayerSettings/publish:各平台发版配置 BuildPlayerSettings/config:一些共享的配置 HotUpdate:热更下载逻辑和资源 HotUpdate.prefab:附带运行热更逻辑的资源 load_dll_config.txt:读入热更dll和运行入口的配置 tex: 热更时用到的ui贴图目录 Scripts: 热更逻辑脚本 LaunchHotUpdate Scripts/LaunchHotUpdate.cs:程序运行的第一个脚本 LaunchHotUpdate.unity:程序运行时的第一个场景 Game Scripts StartGame.cs: 热更后运行的第一个游戏逻辑 LuaDataBehaviour.cs: lua数据脚本,给zserialize序列化成字典 LuaMonoBehaviour.cs: c# call lua的脚本 LuaEnvMgr.cs: lua环境管理器,有读取lua脚本配置 lua/base ClassUtil.lua.txt: lua中创建lua类的公共方法 SerializeClassUtil.lua: 被zserialize序列化后,用这个文件里的功能封装,使得访问字典和MonoBehaviour无差别 Resources hotupdate_app_info.txt:热更用的app配置,包含热更http服务器或oss地址 hotupdate_res.txt:热更资源配置,生成代码热更包时,会把这些资源一起打包成assetbundle Assets/Game:游戏资源目录 assets:资源目录 lua: lua脚本目录 Scripts: c#脚本目录 Game.unity: 游戏场景
# 发版流程 - 转换平台 - 配置平台发版参数(development build, il2cpp等) - 检查发版必须的工具和字段是否配置完整 - 更新热更配置文件信息 - 检查addressable兼容性并生成addressable - 打包热量代码包的assetbundle - 上传addressable和代码包到http文件系统或oss - 生成app - 发布app到渠道 - 启动本地http服务器 - 弹窗提示app下载地址 - 复制下载地址到浏览器打开并下载运行app
# 热更流程 - 在BaseLaunchHotUpdate.dll中,BaseLaunchHotUpdate检查是否启用热更,是的话继续 - 进入BaseHotUpdate.dll开始热更逻辑 - 检查是否白名单设备 - 检查是否需要热更代码 - 检查是否需要热更Addressable - 下载addressable和代码包 - 重加裁Addressable内容信息 - 开始游戏(StartGame),进入Assembly-CSharp.dll
# 环境配置 - 需安装git命令行工具 # Unity技术讨论群 951129597