# LitGameFramework
**Repository Path**: hsdkdf/lit-game-framework
## Basic Information
- **Project Name**: LitGameFramework
- **Description**: Unity游戏框架
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-12-26
- **Last Updated**: 2025-11-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Unity微信小游戏框架
## 简介
Unity版本 2021.3.45f1
该框架旨在帮助开发者快速进行微信小游戏开发,具有以下特点
- 代码简洁清晰
- 支持热更新
- 支持快速调试
- 支持多种打包方式
- 支持本地CDN
- 支持Nakama后端框架
成功上线游戏 [《红驴驴绿驴驴》](https://www.taptap.cn/app/735878)
### 第三方工具(已全部集成到框架中,无需单独从远端拉取)
| 名称 | 作用 | 地址 |
| --- | --- | --- |
| YooAsset | 资源管理 | https://www.yooasset.com/ |
| HybridCLR | 代码热更 | https://hybridclr.doc.code-philosophy.com|
| UniTask | 异步操作 | https://github.com/Cysharp/UniTask |
| IngameDebugConsole | GM工具 | https://github.com/yasirkula/UnityIngameDebugConsole |
| JsonDotNet | 序列化 | https://github.com/JamesNK/Newtonsoft.Json |
| Unity/团结快速适配方案 | 小游戏转换 |https://wechat-miniprogram.github.io/minigame-unity-webgl-transform |
## 快速上手
### 初始化项目
```
菜单栏 HybridCLR=>Installer...
勾选 ,并选择框架中制作制作好的版本,在目录 中
点击Install安装,HybridCLR会自动复制il2cpp到项目本地路径
```
### 添加游戏
```
GameEntrance.cs 为游戏入口脚本,请在其StartGame方法中启动游戏的业务逻辑
例如:打开游戏场景,打开主界面UI、登录UI等
```
### 启动游戏
```
切换到初始场景 LitMenu => Entrance
切换到Editor环境 LitMenu => Environment => 修改Env为Editor
运行Unity
```
### APP构建
游戏提供了多种构建方式,以Android为例
```
构建应用 LitBuild => Android => Dev => App
查看构建结果 LitBuild => OpenFolder
启动CDN LitMenu => CDN => Start
```
### 微信小游戏构建
```
构建微信小游戏前需要去[微信公众平台](https://mp.weixin.qq.com/wxamp/home)注册账号并创建应用
注册完成后将应用appId配置到上面提到的ProjectConfig脚本中
然后使用LitBuild或Python构建均可
构建结果为微信小游戏项目,因此还需要安装[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
启动CDN LitMenu => CDN => Start
使用微信开发者工具打开项目,注意事项:
- 若使用本地CDN手机需要与电脑连接到同一局域网
- 若使用本地CDN资源下载失败,可以尝试详情中勾选不校验合法域名
- 调试模式下首包会比较大,建议在详情中勾选将上限调整为8M
最后点击预览,手机微信扫码即可
```
### Demo
```
可以在demo分支查看示例
```
## 项目详解
### 示意图
项目结构
```
UnityProject
|--- Assets
|--- InApp App中内容
|--- InBundle Bundle中内容
|--- Third 第三方工具
|--- CDN 本地DN路径
|--- Build 构建结果路径
|--- Packages 第三方包
|--- libi2cpp HybridCLR特制版il2cpp
```
启动流程
```
GameManager.Start 启动GameState状态机 =>
GameState_Init 游戏初始化 =>
GameState_ForceUpdate 强更新检查 =>
GameState_HotUpdate 启动热更新状态机 =>
|^^^^^^^^^^^^^^^^^ 热更新流程 ^^^^^^^^^^^^^^^^^|
| AssetState_Init 初始化 |
| AssetState_UpdateVersion 获取远端版本 |
| AssetState_UpdateManifest 获取资源清单 |
| AssetState_DownloadFiles 下载资源文件 |
| AssetState_ClearCache 无下载资源跳过该步骤 |
| AssetState_UpdateOver 热更新结束 |
|^^^^^^^^^^^^^^^^^ 热更新结束 ^^^^^^^^^^^^^^^^^|
GameState_Hybrid 初始化热更程序集 =>
HotUpdate.Start 初始化热更框架 =>
GameEntrance.Start 游戏业务入口
```
### 命名空间
|命名空间|说明|
|---|---|
|LitFramework | 在App中的脚本所在命名空间 |
|HBFramework | 在Bundle中的脚本所在命名空间 |
|BuildTools | 构建工具类所在命名空间 |
### InApp
>App中结构比较简单,仅提供必要的启动逻辑
|名称|说明|
|---|---|
|FSM|有限状态机|
|AssetManager|资源管理器,仅提供异步加载方式|
|GameManager|游戏管理器,控制游戏的初始化及启动流程|
|SingletonManager|用来创建和管理游戏中的单例|
|DeviceUtility|提供了获取设备id的方法|
|ProjectConfig|项目配置(下面详细介绍)|
|ProjectEnvironment|项目环境(下面详细介绍)|
**ProjectConfig.cs (项目配置)**
|通用配置|类型|说明|
|---|---|---|
|appVersion|string|App版本|
|projectName|string|项目名称|
|cdn|string|CDN地址|
|development|bool|是否构建development版本|
|autoProfile|string|自动附加到UnityProfiler|
|targetFrameRate|int|帧率|
|resolution|Vector2|应用分辨率|
|openGM|bool|是否开启GM|
|HybridCLR配置|类型|说明|
|---|---|---|
|useBytes|bool|使用bytes加载代码|
|aotDllList|string|补充元数据列表|
|YooAsset配置|类型|说明|
|---|---|---|
|playMode|EPlayMode|YooAsset运行模式|
|packageName|string|资源包名|
|Android配置|类型|说明|
|---|---|---|
|useCustomKeystore|bool|是否使用keystore|
|keystoreName|string|keystore名字|
|keystorePass|string|keystore密码|
|keyaliasName|string|keyalias名字|
|keyaliasPass|string|keyalias密码|
|versionCode|int|版本号|
|Ios配置|类型|说明|
|---|---|---|
|TODO|TODO|TODO|
|微信小游戏配置|类型|说明|
|---|---|---|
|appId|string|小游戏应用Id|
|profilingFuncs|bool|profilingFuncs|
|profilingMemory|bool|profilingMemory|
**ProjectEnvironment.cs (项目环境)**
|环境枚举|说明|
|---|---|
|Editor|程序人员使用的编辑器环境|
|Editor_Art|美术人员使用的编辑器环境,以bytes方式加载代码|
|Android_Dev|Android开发环境|
|Android_Release|Android发布环境|
|Ios_Dev|Ios开发环境|
|Ios_Release|Ios发布环境|
|WxMiniGame_Dev|微信小游戏开发环境|
|WxMiniGame_Release|微信小游戏发布环境|
### InBundle
>**框架主体**及**所有业务逻辑的代码和资源**都在Bundle中
#### LitFramework
**目前提供的管理器**
|Managers|说明|
|---|---|
|AudioManager|音频管理器,播放游戏中的音乐音效|
|FPSManager|帧率管理器,计算并显示当前帧率|
|LogManager|日志管理器,记录游戏运行过程中的日志|
|MessageManager|消息管理器,游戏中消息的发送与监听|
|PanelManager|界面管理器,维护游戏中的UI|
|SingletonManager|单例管理器,创建销毁游戏中的单例|
|SSceneManager|场景管理器,TODO|
|StorageManager|存档管理器,管理游戏本地存档|
|TimeManager|时间管理器,获取本地时间和服务器时间|
|TimerManager|计时器管理器,管理游戏中的延时、计时操作|
|Proxy|代理,代码InApp中的管理器:GameManager、AssetManager|
**集成了一些常用工具**
|Tools|说明|
|---|---|
|AStar|A*寻路|
|BehaviourTree|行为树,用于AI制作|
|ComponentFinder|组件查找器,挂载预制体上,用于对其中组件的查找|
|CustomCollider|自定义碰撞器(待完善)|
|FSM|有限状态机,用于项目流程控制或AI制作|
|ObjectPool|对象池工具,由接口方式实现|
|ObserverComponents|事件监听组件,通过动态挂载快速实现UI点击、拖拽等事件监听|
|UIEventFilter|UI事件过滤器,使用顶层UI过滤玩家操作,用于新手引导中的点击限制|
|Utility|一些更小的工具类:例如AES加密解密、持久化文件操作、网络时间获取等等|
**此外框架中还内置了常用的UI界面**
|Panels|说明|
|---|---|
|Panel_GM|GM界面,可输入GM指令|
|Panel_Mask|遮罩界面,用于阻隔玩家操作|
|Panel_TextTip|文字提示界面|
|Panel_DialogTip1|带有一个选项的对话框界面|
|Panel_DialogTip2|带有两个选项的对话框界面|
|Panel_Loading|加载界面|
|Panel_Setting|设置界面|
界面预制体所在目录 InBundle/Framework/Prefabs/UI,开发者可根据游戏风格进行修改
#### Game
GameEntrance为游戏入口类,可以在其StartGame方法中启动游戏的业务逻辑
## LitMenu(菜单工具)
>LitMenu中提供了一些基本工具
```
LitMenu
|--- Entrance 打开入口场景
|--- Environment 打开项目环境配置
|--- Presistent 缓存文件相关
|--- OpenFolder 打开缓存文件所在目录
|--- Clear 清理所有缓存文件
|--- Table
|--- OpenFolder 打开表所在目录
|--- Generate Luban读表
|--- CDN
|--- Start 启动服务
|--- OpenFolder 打开资源所在目录
|--- OpenBrowser 在浏览器中打开
```
## LitBuild(构建工具)
>LitBuild中提供了多种构建方式
```
LitBuild
|--- OpenFolder 打开构建结果目录
|--- Android
|--- Dev
|--- App 打包Android应用
|--- Project 打包Android工程
|--- Bundle 打包资源并同步到本地CDN
|--- Release
|--- App打包Android应用
|--- Project 打包Android工程
|--- Bundle 打包资源并同步到本地CDN
|--- Ios
|--- Dev
|--- Project 打包XCode工程
|--- Bundle 打包资源并同步到本地CDN
|--- Release
|--- Project 打包XCode工程
|--- Bundle 打包资源并同步到本地CDN
|--- WxMiniGame
|--- Dev
|--- Project 打包微信小游戏工程
|--- Bundle 打包资源并同步到本地CDN
|--- Release
|--- Project 打包微信小游戏工程
|--- Bundle 打包资源并同步到本地CDN
```
## 微信能力支持
>为方便小游戏开发者进行快速开发,框架也接入了常用的微信平台能力
### 分享
### 排行榜
### 数据域
## 网络支持
nakama分支提供了网络部分的支持
关于nakama请参考 [官方文档](https://heroiclabs.com/docs/nakama/client-libraries/unity/)
## Jenkins支持
需要安装jenkins环境 [官方文档](https://www.jenkins.io/)
需要Python环境 [官方文档](https://www.python.org/)
框架中提供了Shell脚本可用于jenkins构建项目
**Shell脚本能力**
```
BuildScripts
|--- build-unity.sh 执行Unity编辑器方法的shell
|--- build_android-dev.sh 打包AndroiDev
|--- build_android-release.sh 打包AndroiRelease
|--- build_ios-dev.sh 打包IOSDev
|--- build_ios-release.sh 打包IOSRelease
|--- build_wxminigame-dev.sh 打包微信小游戏Dev
|--- build_wxminigame-release.sh 打包微信小游戏Release
|--- feishu
|--- robot_image.py 飞书发送图片机器人
|--- robot_message.py 飞书发送消息机器人
|--- wx
|--- robot_wx_preview.js 微信小游戏预览机器人
|--- robot_wx_upload.js 微信小游戏上传机器人
```
**使用示例**
$Type 为打包参数 应用/资源
```
#打包AndroiDev
#!/bin/bash -il
sh BuildScripts/build-android-dev.sh $Type
```
## 常见问题
TODO