Skip to content

hasanyalmanbas/QFramework

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LOGO

Build Status

QFramework 简介 Intro

中文|English

QFramework 是提供一套简单、强大、易上手、符合 SOLID 原则、支持领域驱动设计(DDD)、事件驱动、数据驱动、分层、MVC 、CQRS、模块化、易扩展的架构,她的源码只有不到 800 行,你可以完全把她放在你的笔记应用里保存。

提供的架构图

举个例子(一图胜千言😂)

各种情况的示意图

架构使用规范

QFramework系统设计架构分为四层及其规则:

  • 表现层:ViewController层。IController接口,负责接收输入和状态变化时的表现,一般情况下,MonoBehaviour 均为表现层
    • 可以获取System
    • 可以获取Model
    • 可以发送Command
    • 可以监听Event
  • 系统层:System层。ISystem接口,帮助IController承担一部分逻辑,在多个表现层共享的逻辑,比如计时系统、商城系统、成就系统等
    • 可以获取System
    • 可以获取Model
    • 可以监听Event
    • 可以发送Event
  • 数据层:Model层。IModel接口,负责数据的定义、数据的增删查改方法的提供
    • 可以获取Utility
    • 可以发送Event
  • 工具层:Utility层。IUtility接口,负责提供基础设施,比如存储方法、序列化方法、网络连接方法、蓝牙方法、SDK、框架继承等。啥都干不了,可以集成第三方库,或者封装API
  • 除了四个层级,还有一个核心概念——Command
    • 可以获取System
    • 可以获取Model
    • 可以发送Event
    • 可以发送Command
  • 层级规则:
    • IController 更改 ISystem、IModel 的状态必须用Command
    • ISystem、IModel状态发生变更后通知IController必须用事件或BindableProperty
    • IController可以获取ISystem、IModel对象来进行数据查询
    • ICommand不能有状态
    • 上层可以直接获取下层,下层不能获取上层对象
    • 下层向上层通信用事件
    • 上层向下层通信用方法调用(只是做查询,状态变更用Command),IController的交互逻辑为特别情况,只能用Command

(照抄自:学生课堂笔记1

运行环境

  • Unity 2018.4.x ~ 2021.x

安装

  • QFramework.cs
    • 直接复制此代码到自己项目中的任意脚本中
  • QFramework.ToolKits
    • 见下列表格
  • QFramework.ToolKitsPro

资源

版本
QFramework.cs QFramework 本体架构的实现
QFramework.Toolkits QFramework 集成 UIKit/ActionKit/ResKit/PackageKit/AudioKit 等全部官方工具 从国内服务器下载|Github Release
QFramework.ToolKitsPro 在 ToolKits 基础上集成更多好用的工具的版本 AssetStore
示例/Demo
Example 示例 包含 CounterApp、《点点点》小游戏等 QF 使用示例 github|gitee
CubeMaster 示例 一个 3D 版 2048 小游戏,由 QF 成员 soso 制作 github|gitee
FlappyBird 示例 一个 FlappyBird 小游戏,由 QF 成员 soso 制作 github|gitee
ShootingEditor2D 包含一个关卡编辑器的开源射击游戏 github|gitee
群友案例
赛车游戏《Crazy Car》 群友 TastSong 使用 QF 进行重构的开源赛车游戏 游戏主页(Github)
贪吃蛇 群友使用 一只皮皮虾 QF 提供的贪吃蛇案例 游戏主页(Gitee)
社区
QQ 群:623597263 交流群 点击加群
github issue github 社区 地址
gitee issue gitee 社区(国内访问快) 地址
教程
《框架搭建 决定版》 教程 QFramework 的核心架构是怎么演化过来的? 课程主页|学生课堂笔记1|学生课堂笔记2
产品案例
独立游戏《鬼山之下》 使用 QF 制作的独立游戏 游戏主页(Steam)
手机游戏《谐音梗挑战》 使用 QF 制作的手机游戏 游戏主页(TapTap)
独立游戏《推灭泡泡姆》 ‍QF 群友,大学生团队制作的独立游戏,终于等到上架啦,亲自游玩过,很好玩,大家多多支持呀~(P.S 使用 QF.cs 作为架构开发的哦~) 游戏主页(TapTap)
官方工具(独立版本,不互相依赖)
SingletonKit 易上手功能强大的单例工具,由 QF 官方维护 github|gitee
ExtensionKit 易上手功能强大的 C#/UnityAPI 的静态扩展 ,由 QF 官方维护 github|gitee
IOCKit 易上手功能强大的 IOC 容器 ,由 QF 官方维护 github|gitee
TableKit 一套类似表格的数据结构(List<List<T>>),兼顾查询效率和联合强大的查询功能,由 QF 官方维护 github|gitee
PoolKit 对象池工具,由 QF 官方维护 github|gitee
LogKit 日志工具,由 QF 官方维护 github|gitee
ActionKit 动作序列工具,由 QF 官方维护 github|gitee
ResKit 资源管理工具,由 QF 官方维护 github|gitee
UIKit UIKit 是一套 UI/View 开发解决方案,由 QF 官方维护 github|gitee
AudioKit 一套音频管理工具,由 QF 官方维护 github|gitee
PackageKit 一套包管理工具,可以通过 PackageKit 安装旧版本的 QFramework,以及大量的解决方案。 github|gitee

Star 趋势(如果项目有帮到您欢迎点赞)

Stargazers over time

核心成员

优秀的 Unity 库、框架

代码规范完全遵循:

QCSharpStyleGuide

赞助 Donate:

  • 如果觉得不错可以在 这里 Asset Store 给个 5 星哦~ give 5 star
  • 或者给此仓库一个小小的 Star~ star this repository
  • 以上这些都会转化成我们的动力,提供更好的技术服务!

About

Unity3D System Design Architecture

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%