# YouYou **Repository Path**: basic-module-frame/YouYouFramework ## Basic Information - **Project Name**: YouYou - **Description**: YouYouFramework是基于Unity的游戏客户端框架,对游戏开发过程中常用模块进行了封装,使用HybridCLR热更新。 可接入ET或GameDesigne等服务端框架,实现网游快速开发。 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 118 - **Created**: 2024-01-05 - **Last Updated**: 2024-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README YouYou框架QQ交流群:185187673
YouYou框架使用教程地址:https://www.bilibili.com/video/BV1Fu411s7MV/
技术支持QQ(收费):2925856889
**简介** ------------ - 这是一款适合开发商业级游戏的U3D代码框架,分别参考了多款主流代码框架
- 框架主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量
- 上手难度相对比较简单,模块之间的依赖比较少, 方便自行删除或扩展模块
- 支持HybridCLR的代码热更新,AssetBundle资源管理
- 支持UniTask异步编程,告别委托回调式地狱写法
**原作者: 饭饭**
**框架开源迭代: 五杀时间到了** 在最新的 YouYou Framework 中, 包含以下内置模块. **YouYouEditor(编辑器扩展界面)** ------------------------------------ { - 资源打包配置(AssetBundle) :
1.资源包版本号
2.资源包加密
3.设置文件夹内容打整包或散包, 如Excel,Lua脚本可以打成整包,角色、场景、特效、UI可以打成散包
4.打包到【对应版本号/平台】文件夹内,生成"依赖关系文件"和"版本信息文件",加载时自动读取 - 宏配置(Macro) :
1.选择资源加载模式,如AssetBundle加载,AssetDatabase加载
2.选择需要过滤的DebugLog信息 - 全局配置(Config) :
1.Http失败重试次数
2.AssetBunldle池释放间隔 等等 - 对象池分析(Pool Analyze) - 方便查看项目里各个池中的资源的资源计数和剩余释放时间.
1.类对象池
2.AssetBundle池
3.Asset池 } **YouYouMain(框架初始启动模块)** --------------------------------------- { - 调试器 (Reporter) - 基于Reporter实现,可在手机真机运行时,调出调试器窗口,便于查看运行时日志、调试信息等 - 下载 (Download) - 提供下载文件的功能,支持断点续传,并可指定允许几个下载器进行同时下载。更新资源时会主动调用此模块。 - 检查更新 (CheckVersion) - 实现了资源检查更新和下载相关逻辑,并提供了默认的检查更新界面 - 代码热更新 (Hotfix) - 提供了基于HybridCLR的代码热更新, 可以热更新YouYouFramework文件夹和YouYouScript文件夹内的所有代码 } **YouYouFramework(框架运行功能模块)** --------------------------------------- { - 事件 (Event) - 观察者模式思想, YouYouFramework 中的很多模块在完成操作后会抛出内置事件,用户也可以定义自己的游戏逻辑事件。 - 定时器 (Time) - 提供了定时功能,支持多种定时需求, 如复活倒计时, 技能CD等, 用于管理游戏运行时的各种定时器。 - 有限状态机 (FSM) - 提供创建、使用和销毁有限状态机的功能。方便管理多个状态机. - 流程 (Procedure) - 是贯穿游戏运行时整个生命周期的有限状态机。通过流程,将不同的游戏状态进行解耦将是一个非常好的习惯。对于网络游戏,你可能需要如检查资源流程、更新资源流程、检查服务器列表流程、选择服务器流程、登录服务器流程、创建角色流程等流程,而对于单机游戏,你可能需要在游戏选择菜单流程和游戏实际玩法流程之间做切换。如果想增加流程,只要派生自 ProcedureBase 类并实现自己的流程类即可使用。 - 数据表 (DataTable) - 将游戏数据以表格(Excel)的形式进行配置后,可以使用此模块读取数据表。数据表的格式是支持自定义的。 - 模型 (Model) - 基于MVC思想, 管理运行时的所有Model, 以便统一管理与释放运行时数据 - Web 请求 (Http) - 提供使用短连接的功能,可以用 Get 或者 Post 方法向服务器发送请求并获取响应数据,可指定允许几个 Web 请求器进行同时请求。 - 本地化 (Localization) - 提供本地化功能,也就是我们平时所说的多语言。支持Text和Image的本地化 - 对象池 (Pool) - 提供对象缓存池的功能,避免频繁地创建和销毁各种游戏对象,提高游戏性能。目前支持类对象池, 变量池, GameObject对象池. - 场景 (Scene) - 提供场景管理的功能,可以同时加载多个场景,也可以随时卸载任何一个场景,从而很容易地实现场景的分部加载。 - 资源 (Loader) - 支持同步加载和UniTask异步加载, 使用了一套完整的加载资源体系。像数据表、Shader、场景、界面、角色等任何资源,都可使用Loader进行加载。 提供了默认的内存管理策略: 基于主Asset和主AB包和依赖AB包做引用计数, 并使用AssetBundle.Unload(true)释放内存。 - 界面 (UI) - 提供管理界面和界面组的功能,如 激活界面、改变界面层级 界面反切(回到上一级)等。界面使用结束后可以不立刻销毁(UI池),从而等待下一次重新使用。 - 声音 (Audio) - 提供管理声音和声音组的功能,支持全局音量调节, 音效音量单独配表 - 输入系统 (Input) - 提供了跨平台的Input封装, 支持PC(键盘鼠标)和手机(触屏)实时切换, 并实现输入方和监听方的代码解耦合。 - 本地数据存档 (PlayerPrefs) - 基于Unity官方PlayerPrefs的本地数据存档, 支持存Object对象,拥有更好的性能 - 任务 (Task) - 提供了Action委托的分组管理, 支持"顺序链式调用"和"并行调用", 在一定程度上解决了委托套娃的现象 } 为了让框架尽量轻量化,现将一些非必须的功能模块拆分到了别的仓库,同时在这里推荐一些第三方的框架,可与YouYouFramework组合使用,各位可自行接入: **可选工具包** ------------------------------------ { - 行为树框架:https://gitee.com/chen_junji/BehaviourTree - 技能编辑器:https://gitee.com/chen_junji/SkillEditor - Camera控制(跟随 旋转 缩放): https://gitee.com/chen_junji/CameraFollow - 摇杆: https://gitee.com/chen_junji/UIScroller - ECS框架: https://gitee.com/chen_junji/EntitasExample - 红点系统:https://gitee.com/chen_junji/ReddotTree - 新手引导系统:https://gitee.com/chen_junji/Guide - UI无限滚动列表: https://gitee.com/chen_junji/UIScroller - 后端框架:https://gitee.com/leng_yue/GameDesigner?_from=gitee_search
- Playable自定义动画系统:https://gitee.com/chen_junji/playable-animator - 组件自动绑定工具:https://gitee.com/chen_junji/component-auto-bind-tool }