Back to rankings

liangxiegame/QFramework

C#qframework.cn

Godot/Unity3D System Design Architecture

unityunity3dunity2dunity-scriptsframeworksqframeworkunity3d-frameworkunity-frameworkunity3d-pluginunity-assetu3dunity-3d
Star Growth
Stars
5.4k
Forks
863
Weekly Growth
Issues
7
2k4k
Mar 2016Aug 2019Feb 2023Jul 2026
README

LOGO

QFramework 简介 Intro

中文|English

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

提供的架构图

image.png

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

各种情况的示意图

image-20260124142617406

架构使用规范

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 ~ Unity 6.x

安装

资源

版本
QFramework.cs QFramework 本体架构的实现 文件
QFramework.cs 示例 QFramework.cs 与官方示例: CounterApp、《点点点》、FlappyBird、CubeMaster、ShootingEditor2D、贪吃蛇等 点此下载 unitypackage
QFramework.Toolkits QFramework 集成 CoreKit/UIKit/ActionKit/ResKit/PackageKit/AudioKit 等全部官方工具(已包含 QFramework.cs 和 示例) 点此下载 unitypackage
QFramework.Toolkits.Demo.WuZiQi 使用 QFramework.Toolkits 开发的五子棋 Demo(需要安装好 QFramework.Toolkits) 点此下载 unitypackage
QFramework.Toolkits.Demo.Saolei 使用 QFramework.Toolkits 开发的扫雷 Demo(需要安装好 QFramework.Toolkits) 点此下载 unitypackage
QFramework.ToolKitsPro 在 ToolKits 基础上集成更多好用的工具的版本(已包含 QFramework.Toolkits) AssetStore
群友案例
赛车游戏《Crazy Car》 群友 TastSong 使用 QF 进行重构的开源赛车游戏 游戏主页(Github)
社区
QQ 群1(已满):623597263 交流群 点击加群
QQ 群2:541745166 交流群 点击加群
腾讯频道 中文社区 点击加入频道
Discord 英文社区 点击加入频道
教程
《框架搭建 决定版》 教程 QFramework 的核心架构是怎么演化过来的? 课程主页|学生课堂笔记1|学生课堂笔记2
产品案例 如果用了 qf 并且想要在如下列表中登记,可以在 github/gitee 的 issue 里发帖子,也可以加 qq 群,也可以用邮箱联系凉鞋 liangxiegame@163.com,当然如果看到使用 qf 的项目,我也会先去尝试征得同意再放到如下列表。
img 独立游戏《观鸟笔记》 Steam
独立游戏《乌合之众》 Steam
独立游戏《银河摸鱼人》 Steam
独立游戏《ScaleBox》 Steam
独立游戏《我的玫瑰》 Steam
独立游戏《蚀界档案》 TapTap |Steam
独立游戏《盒子面包坊》 TapTap | Steam
独立游戏《X-teriods》 Steam
独立游戏《你好茄子:精灵的诞生》 Steam
独立游戏《当火车鸣笛三秒》 Steam|TapTap
独立游戏《你好茄子》 Steam
独立游戏《第一座山》 Steam
独立游戏《推灭泡泡姆》 TapTap
独立游戏《鬼山之下》 Steam
手机游戏《谐音梗挑战》 TapTap
其他相关教程
《独立游戏体验计划》(猫叔) 独立游戏制作体验教程,有用到 QFramework.cs b 站
《原创独立游戏制作:平台射击 Roguelike》(凉鞋) 原创独立游戏制作教程,有用到 QFramework.cs b 站
《原创独立游戏制作:类星露谷》(凉鞋) 原创独立游戏制作教程,有用到 PlayMaker、QFramework.Tookits b 站
《QFramework 游戏开发:类幸存者》 面向 QFramework 的游戏开发教程,完成一款类吸血鬼幸存者游戏。 b 站
《QFramework 教程会员》 QFramework 相关的课程案例 GamePix

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

Stargazers over time

作者

贡献者

优秀的 Unity 库、框架

代码规范完全遵循:

QCSharpStyleGuide

赞助 Donate:

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

鸣谢

感谢 JetBrains 公司提供的使用许可证!

JetBrains的Logo

感谢 OpenAI 通过 Codex for OSS 计划对本项目的开源维护提供支持。

Powered by Codex

感谢 GitHub Copilot 对本项目开源维护提供支持。

Powered by Copilot

感谢小米 MiMo 对本项目开源维护提供 Token 赞助。

Powered by MiMo

本开源项目由 QFramework 教程年会员 提供资助

Related repositories
icsharpcode/ILSpy

.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!

C#MIT Licensedecompilerdecompiler-engine
25.7k3.7k
Donchitos/Claude-Code-Game-Studios

Turn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studio hierarchy.

ShellMIT Licenseai-agentsai-assisted-development
23.3k3.3k
lettier/3d-game-shaders-for-beginners

🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.

C++shaders3d
lettier.github.io/3d-game-shaders-for-beginners/index.html
19.8k1.5k
Unity-Technologies/ml-agents

The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinforcement learning and imitation learning.

C#Otherreinforcement-learningunity3d
unity.com/products/machine-learning-agents
19.6k4.5k
Perfare/AssetStudio

AssetStudio is a tool for exploring, extracting and exporting assets and assetbundles.

C#MIT Licenseunity3dunity
15.6k2.9k
heroiclabs/nakama

Scalable open-source game backend server: multiplayer, matchmaking, leaderboards, chat, and social features for games.

GoGo ModulesApache License 2.0multiplayerbackend
heroiclabs.com
12.9k1.4k
CoplayDev/unity-mcp

Unity MCP acts as a bridge between AI assistants and your Unity Editor. Give your LLM tools to manage assets, control scenes, edit scripts, and automate tasks within Unity.

C#MIT Licenseaiai-integration
coplaydev.github.io/unity-mcp/
12.7k1.3k
Cysharp/UniTask

Provides an efficient allocation free async/await integration for Unity.

C#MIT Licensecsharpunity
11.1k1k
Tencent/xLua

xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc.

COtherluaunity
10.1k2.5k
egametang/ET

Unity3D Client And C# Server Framework

C#Otherc-sharpserver
9.9k3.2k
Perfare/Il2CppDumper

Unity il2cpp reverse engineer

C#MIT Licenseil2cppreverse-engineering
9.2k1.9k
jynew/jynew

JinYongLegend-like RPG Game Framework with full Modding support and 10+ hours playable samples of game.

C#Otherjinyongunity
8.9k1.9k