# YouYou
**Repository Path**: woos-comp_0/YouYouFramework
## Basic Information
- **Project Name**: YouYou
- **Description**: YouYouFramework是基于Unity的游戏客户端框架,对游戏开发过程中常用模块进行了封装,使用HybridCLR热更新。
可接入各种主流服务端框架,实现网游快速开发。
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 118
- **Created**: 2024-03-25
- **Last Updated**: 2024-03-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
YouYou框架QQ交流群:185187673
YouYou框架使用教程地址:https://www.bilibili.com/video/BV1Fu411s7MV/
后端框架推荐接入:https://gitee.com/leng_yue/GameDesigner?_from=gitee_search
**简介**
------------
- 这是一款适合开发商业级游戏的U3D代码框架,分别参考了多款主流代码框架
- 框架主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量
- 上手难度相对比较简单,模块之间的依赖比较少, 方便自行删除或扩展模块
- 支持HybridCLR的代码热更新,AssetBundle资源管理
- 支持UniTask异步编程,告别委托回调式地狱写法
**原作者: 饭饭**
**框架开源迭代: 五杀时间到了**
在最新的 YouYou Framework 中, 包含以下内置模块.
**GameEntry(游戏框架入口)**
------------------------------------
{
>事件 (Event) - 观察者模式思想, YouYouFramework 中的很多模块在完成操作后会抛出内置事件,用户也可以定义自己的游戏逻辑事件。
>定时器 (Time) - 提供了定时功能,支持多种定时需求, 如复活倒计时, 技能CD等, 用于管理游戏运行时的各种定时器。
>有限状态机 (FSM) - 提供创建、使用和销毁有限状态机的功能。方便管理多个状态机.
>流程 (Procedure) - 是贯穿游戏运行时整个生命周期的有限状态机。通过流程,将不同的游戏状态进行解耦将是一个非常好的习惯。对于网络游戏,你可能需要如检查资源流程、更新资源流程、检查服务器列表流程、选择服务器流程、登录服务器流程、创建角色流程等流程,而对于单机游戏,你可能需要在游戏选择菜单流程和游戏实际玩法流程之间做切换。如果想增加流程,只要派生自 ProcedureBase 类并实现自己的流程类即可使用。
>数据表 (Data Table) - 将游戏数据以表格(Excel)的形式进行配置后,可以使用此模块读取数据表。数据表的格式是支持自定义的。
>模型 (Model) - 基于MVC思想, 管理运行时的所有Model, 以便统一管理与释放运行时数据
>Web 请求 (Http) - 提供使用短连接的功能,可以用 Get 或者 Post 方法向服务器发送请求并获取响应数据,可指定允许几个 Web 请求器进行同时请求。
>本地数据存档 (PlayerPrefs) - 提供了基于Unity官方PlayerPrefs的本地数据存档, 支持数据更新派发事件, 支持存Object对象
>下载 (Download) - 提供下载文件的功能,支持断点续传,并可指定允许几个下载器进行同时下载。更新资源时会主动调用此模块。
>本地化 (Localization) - 提供本地化功能,也就是我们平时所说的多语言。支持Text和Image的本地化
>对象池 (Pool) - 提供对象缓存池的功能,避免频繁地创建和销毁各种游戏对象,提高游戏性能。目前支持类对象池,变量池,GameObject对象池,AssetBundle池,Asset池等(如Prefab).
>场景 (Scene) - 提供场景管理的功能,可以同时加载多个场景,也可以随时卸载任何一个场景,从而很容易地实现场景的分部加载。
>资源 (Loader) - 支持UniTask异步加载和同步加载, 使用了一套完整的加载资源体系。不论简单的数据表、本地化字典,还是复杂的实体、场景、界面,都可使用Loader进行加载。 YouYouFramework 提供了默认的内存管理策略(当然,你也可以定义自己的内存管理策略)。
>界面 (UI) - 提供管理界面和界面组的功能,如 激活界面、改变界面层级 界面反切(回到上一级)等。界面使用结束后可以不立刻销毁(UI池),从而等待下一次重新使用。
>声音 (Audio) - 提供管理声音和声音组的功能,支持全局音量调节, 音效音量单独配表
>输入系统 (Input) - 提供了跨平台的Input封装, 支持PC(键盘鼠标)和手机(触屏)实时切换, 并实现输入方和监听方的代码解耦合。
>任务系统 (Task) - 提供了Action委托的分组管理, 支持"顺序链式调用"和"并行调用", 在一定程度上解决了委托套娃的现象
>代码热更新 (HybridCLR) - 提供了基于HybridCLR的代码热更新, 除了"检查更新界面", "下载"等检查更新流程之前的代码, 其他代码通通支持热更新(包括YouYouFramework也能热更新).
}
**YouYouEditor(Odin可视化编辑界面)**
------------------------------------
{
>资源打包配置(AssetBundle) - 支持配置 资源包版本号,资源包加密:
1.设置文件夹内容打整包或散包,如Excel,Lua脚本可以打成整包,角色、场景、特效、UI可以打成散包
2.打包到【对应版本号/平台】文件夹内,生成"依赖关系文件"和"版本信息文件",加载时自动读取
>宏配置(Macro) - 选择资源加载模式,如AssetBundle加载,AssetDatabase加载,Resource加载,选择需要过滤的DebugLog信息等
>全局配置(Config) - 支持设备等级参数(高 中 低 配机),如Http失败重试次数,不同等级设备匹配相应参数值
>对象池分析(Pool Analyze) - 方便查看项目里各个池中的资源的资源计数和剩余释放时间:
1.类对象池
2.AssetBundle池
3.Asset池
}
**MVC框架**
------------------------------------
{
>适合开发业务系统逻辑, 例如背包 商店 聊天等
>可调用YouYou Framework的任意模块
>基于MVC框架开发了几个业务系统和常用界面,可运行查看演示
}
**战斗框架**
------------------------------------
{
>行为树框架:基于GraphView的节点编辑器,基于事件驱动的行为树Runtime框架。使用了猫仙人提供的工具包: https://edu.uwa4d.com/course-intro/0/539
>技能编辑器:基于TimeLine扩展自定义轨道实现的编辑器,方便让美术人员进行音效 特效 动画 视角震屏 等各种效果衔接调节,而不是让程序员去做技能效果的衔接。目前提供了最常用的自定义轨道,各位也可以很方便的扩展自己需要的轨道。
>Playable自定义动画系统:基于Unity官方Playable API定制的自定义动画系统。
相比传统的Mecanim动画系统,去掉了在编辑器动画状态机连线的繁琐操作,而是直接用代码状态机来控制动画,可以大幅减少工作量。
>ECS框架: 使用了Unity官方提供的开源ECS框架Entitas, 适合开发GamePlay战斗系统逻辑, 可调用YouYou Framework的任意模块, 基于ECS框架开发了一个Demo,可运行场景查看演示
}
**红点系统**
------------------------------------
{
>基于前缀树的高性能红点系统,简单高效的建立红点的父子关系,支持客户端红点和服务端红点的混合开发
>使用了猫仙人提供的工具包: https://edu.uwa4d.com/course-intro/0/189
}
**新手引导系统**
------------------------------------
{
>提供了常用的UI镂空遮罩,支持点击穿透事件
>管理所有步骤,并将步骤进行分组,支持存档,支持步骤组重复引导
>非常的灵活,支持自定义步骤的实现逻辑和完成条件
}
**常用工具**
------------------------------------
{
>调试器,基于Reporter实现,可在手机真机运行时,调出调试器窗口,便于查看运行时日志、调试信息等
>UI无限滚动列表
>Camera控制(跟随 旋转 缩放)
>摇杆, 屏幕滑动
>画质品质设置,简单封装了Quality设置,分辨率设置,帧率设置等,支持存档和画质切换时的事件派发。
}