QFramework v1.0 使用指南 介绍篇:01. 简介

news/2024/5/18 19:13:09/文章来源:https://blog.csdn.net/u010125551/article/details/127324030

01. 简介

大家好,我是 QFramework 的作者 凉鞋,QFramework 从第一次代码提交到现在快 7 年了(2015 年 12 月 ~ 2022 年 10 月)了,而经过了 7 年时间的打磨,我们终于迎来了 v1.0 版本。

此教程,将收录于 QFramework 的官方文档,发布于 qframework.cn,同时也会包含在 QFramework.Toolkits 的编辑器内置文档中。

QFramework 简介

QFramework 是一套渐进式、快速开发框架,适用于任何类型的游戏及应用项目。

QFramework 包含一套 开发架构 和 大量的工具集。

QFramework 特性速览:

  • 开发架构(QFramework.cs)
    • 简单、易上手、强大
    • MVC
    • IOC、分层支持
    • CQRS 支持
    • 符合 SOLID原则
    • 可以使用 DDD 的方式设计项目
    • 不到 1000 行代码
  • 工具集(QFramework.Toolkits)
    • UIKit 界面&View快速开发&管理解决方案
      • UI、GameObject 的代码生成&自动赋值
      • 界面管理
      • 层级管理
      • 界面堆栈
      • 默认使用 ResKit 方式管理界面资源
      • 可自定义界面的加载、卸载方式
      • Manager Of Manager 架构集成(不推荐使用)
    • ResKit 资源快速开发&管理解决方案
      • AssetBundle 提供模拟模式,开发阶段无需打包即可加载资源
      • 资源名称代码生成支持
      • 同一个 API 可加载 AssetBundle、Resources、网络 和 自定义来源的资源
      • 提供一套引用计数的资源管理模型
    • AudioKit 音频管理解决方案
      • 提供背景音乐、人声、音效 三种音频播放 API
      • 音量控制
      • 默认使用 ResKit 方式管理音频资源
      • 可自定义音频的加载、卸载方式
    • CoreKit 提供大量的代码工具
      • ActionKit:动作序列执行系统
      • CodeGenKit:代码生成 & 自动序列化赋值工具
      • EventKit:提供基于类、字符串、枚举以及信号类型的事件工具集
      • FluentAPI:对大量的 Unity 和 C# 常用的 API 提供了静态扩展的封装(链式 API)
      • IOCKit:提供依赖注入容器
      • LocaleKit:本地化&多语言工具集
      • LogKit:日志工具集
      • PackageKit:包管理工具,由此可更新框架和对应的插件模块。
      • PoolKit:对象池工具集,提供对象池的基础上,也提供 ListPool 和 Dictionary Pool 等工具。
      • SingletonKit:单例工具集
      • TableKit:提供表格类数据结构的工具集

QFramework 的设计哲学是从每个细节上提升开发效率。

同时 QFramework 还包含丰富的生态。

QFrameowrk.Toolkits 内置编辑器

image.png

资源

版本
QFramework.csQFramework 本体架构的实现
QFramework.cs 示例QFramework.cs 与官方示例: CounterApp、《点点点》、FlappyBird、CubeMaster、ShootingEditor2D、贪吃蛇等github|gitee
QFramework.ToolkitsQFramework 集成 CoreKit/UIKit/ActionKit/ResKit/PackageKit/AudioKit 等全部官方工具(已包含 QFramework.cs 和 示例)github|gitee
QFramework.Toolkits.Demo.WuZiQi使用 QFramework.Toolkits 开发的五子棋 Demo(需要安装好 QFramework.Toolkits)github|gitee
QFramework.Toolkits.Demo.Saolei使用 QFramework.Toolkits 开发的扫雷 Demo(需要安装好 QFramework.Toolkits)github|gitee
QFramework.ToolKitsPro在 ToolKits 基础上集成更多好用的工具的版本(已包含 QFramework.Toolkits)AssetStore
群友案例
赛车游戏《Crazy Car》群友 TastSong 使用 QF 进行重构的开源赛车游戏游戏主页(Github)
社区
QQ 群:623597263交流群点击加群
github issuegithub 社区地址
gitee issuegitee 社区(国内访问快)地址
教程
《框架搭建 决定版》教程 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
UIKitUIKit 是一套 UI/View 开发解决方案,由 QF 官方维护github|gitee
AudioKit一套音频管理工具,由 QF 官方维护github|gitee
PackageKit一套包管理工具,可以通过 PackageKit 安装旧版本的 QFramework,以及大量的解决方案。github|gitee
其他相关教程
《独立游戏体验计划》(猫叔)独立游戏制作体验教程,有用到 QFramework.csb 站
《原创独立游戏制作》(凉鞋)原创独立游戏制作教程,有用到 QFramework.csb 站

典型的 QFramework.cs 架构代码

namespace QFramework.Exmaple
{public class CounterAppController : MonoBehaviour , IController{// Viewprivate Button mBtnAdd;private Button mBtnSub;private Text mCountText;// Modelprivate ICounterAppModel mModel;void Start(){// 获取模型mModel = this.GetModel<ICounterAppModel>();// View 组件获取mBtnAdd = transform.Find("BtnAdd").GetComponent<Button>();mBtnSub = transform.Find("BtnSub").GetComponent<Button>();mCountText = transform.Find("CountText").GetComponent<Text>();// 监听输入mBtnAdd.onClick.AddListener(() =>{// 交互逻辑this.SendCommand<IncreaseCountCommand>();});mBtnSub.onClick.AddListener(() =>{// 交互逻辑this.SendCommand(new DecreaseCountCommand(/* 这里可以传参(如果有) */));});// 表现逻辑mModel.Count.RegisterWithInitValue(newCount => // -+{UpdateView();}).UnRegisterWhenGameObjectDestroyed(gameObject);}void UpdateView(){mCountText.text = mModel.Count.ToString();}public IArchitecture GetArchitecture(){return CounterApp.Interface;}private void OnDestroy(){mModel = null;}}
}

典型的 QFramework.Toolkits 代码

using QFramework;
using UnityEngine;
using UnityEngine.UI;namespace liangxiegame
{public partial class UIGamePanel : UIPanel{private ResLoader mResLoader;protected override void OnInit(IUIData uiData = null){mResLoader = ResLoader.Allocate();mResLoader.LoadSync<GameObject>("GameplayRoot").Instantiate().Identity().GetComponent<GameplayRoot>().InitGameplayRoot();BtnPause.onClick.AddListener(() =>{AudioKit.PlaySound("btn_click");ActionKit.Sequence().Callback(() => BtnPause.interactable = false).Callback(() => BtnPause.PlayBtnFadeAnimation()).Delay(0.3f).Callback(() => UIKit.OpenPanel<UIPausePanel>()).Start(this);});}protected override void OnClose(){mResLoader.Recycle2Cache();mResLoader = null;}}
}

大量的示例

小游戏《点点点》

b5966b31-f004-4b5f-a38d-25753fb2eb8f.gif

小游戏《FlappyBird》

430b7f31-508d-4569-aa51-b75d5553b8c4.gif

作者:王二 soso https://github.com/so-sos-so

小游戏《Cube Master》

b1334ef2-f6d4-4a9c-a5c4-b6cd6508595c.gif 作者:王二 soso https://github.com/so-sos-so

简易关卡编辑器2D

c57c20cf-5ee6-4346-8be8-8ad1ea2d63b9.gif

ea2cb545-4b5b-4d02-b494-dde4afa4e190.gif

小游戏《贪吃蛇》

fb907355-c06c-4bde-8ca3-5638ba9b3ef7.gif

作者:一只皮皮虾 https://gitee.com/PantyNeko/

以上的示例都是由 QFramework.cs 制作而成的官方示例。

另外还有群友制作的开源游戏

CrazyCar

Unity制作的联机赛车游戏,后台为SpringBoot + Mybatis;游戏采用QFramework框架,支持KCP和WebSocket网络(商用级)

Login.jpg

Setting.png

Homepage.png

Avatar.png Profile.png

Equip.png

Rank.png

TimeTrial.png Match.png

作者: TastSone https://github.com/TastSong

项目地址: https://github.com/TastSong/CrazyCar

案例《五子棋》

2f4dacbd-e59b-43af-b7be-44220fac664e.png

源码地址:

  • github https://github.com/liangxiegame/QFramework
  • gitee https://gitee.com/liangxiegame/QFramework

image.png

案例《扫雷》

作者:Joker

172348_4d54744e_5161625.webp

源码地址:

  • github https://github.com/liangxiegame/QFramework
  • gitee https://gitee.com/liangxiegame/QFramework

image.png

本教程简介

在上一版官方教程《QFramework 使用指南 2020》写完之后,经过两年(2022 年),QFramework 改进了很多工具的使用体验,同时又新增了一套非常简单且强大的开发架构,这样就迎来了 QFramework 第一个正式版本 QFramework v1,这样就导致导致 QFramework 的推荐使用的 API 发生了一些变化,虽然旧版本的 API 还能用,但是按照《QFramework 使用指南 2020》写的很多代码会报很多警告,这会让很多初学者感到疑惑,所以笔者打算在《QFramework 使用指南 2020》的基础上,重制一套新的 QFramework 使用教程,名字叫做《QFramework v1.0 使用指南》。

教程分为架构篇和工具集篇,架构篇着重介绍 QFramework.cs 这套架构入门以及使用规范,工具篇着重介绍 QFramework 中的大量的工具集的使用。

更多内容

  • 转载请注明地址:liangxiegame.com (首发) 微信公众号:凉鞋的笔记
  • QFramework 主页:qframework.cn
  • QFramework 交流群: 623597263
  • QFramework Github 地址: https://github.com/liangxiegame/qframework
  • QFramework Gitee 地址:https://gitee.com/liangxiegame/QFramework
  • GamePix 独立游戏学院 & Unity 进阶小班地址:https://www.gamepixedu.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_23426.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Macos/linux g++ 安装OpenCV环境

本文前半部分主要翻译官方文档的东西 https://docs.opencv.org/4.x/d0/db2/tutorial_macos_install.html 依赖&#xff1a; CMake 3.9 or higher Git Python 2.7 or later and Numpy 1.5 or later大家都是程序员自己安装一下吧 在 relese 这里下载一下源代码&#xff1a; htt…

第三章:为组件库添加规范【前端工程化入门-----从零实现一个react+ts+vite+tailwindcss组件库】

第三章&#xff1a;为组件库添加规范 本章我们会用 eslint、prettier以及Husky 为组件库添加规范&#xff1b; 前置知识&#xff1a; eslint、prettier和husky各有什么作用&#xff1f; eslint是代码检查工具&#xff0c;你可以配置eslint&#xff0c;然后通过lint命令检测…

打游戏哪款蓝牙耳机好?四款适合打游戏的蓝牙耳机推荐

现在年轻人最离不开的就是手游&#xff0c;蓝牙耳机可谓是手机游戏的最佳搭档&#xff0c;一副好的蓝牙耳机可以为游戏带来很完美的助力&#xff0c;延迟低的蓝牙耳机可以实现更好的游戏体验感&#xff0c;那么接下来推荐四款适合打游戏的蓝牙耳机。 1、南卡小音舱蓝牙耳机 佩…

2022年全国大学生数学建模美赛E题NPP数据获取

今年的数学建模美赛终于开始了&#xff01;令我感到欣喜的是&#xff0c;今年E题竟然和地理遥感专业息息相关。E题是分析生态环境方面的&#xff01;因此&#xff0c;有很多小伙伴来询问咨询如何解决这道题目。有些小伙伴&#xff0c;还咨询如何使用CASA软件来计算NPP数据&…

Flink SQL使用Catalog消费Kafka时,多个Source读取同一主题解决方案

一、Catalog定义 Catalog 提供了元数据信息&#xff0c;例如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息。数据处理最关键的方面之一是管理元数据。 元数据可以是临时的&#xff0c;例如临时表、或者通过 TableEnvironment 注册的 UDF。 元数据也可以是…

apollo在虚拟机下部署遇到的坑

目录问题描述解决方法编译问题总结问题描述 ​   其实在虚拟机下部署apollo网上是有线程教程的。可以参考在虚拟机上安装运行百度Apollo 6.0&#xff0c;Apollo 6.0 安装完全指南。我依靠这两个指南准备部署的是apollo 7.0&#xff0c;事实证明虽然版本不同&#xff0c;但部…

1、6边距复合属性

提示&#xff1a;文章写完后&#xff0c;padding可以有到四个值。 1、语法&#xff1a; div{ padding&#xff1a;“50px”&#xff1b; padding&#xff1a;“5px 10px”&#xff1b; padding&#xff1a;“5px 10px 20px”&#xff1b; padding&#xff1a;“5…

flex竖排列元素排列方向

flex竖排列元素排列方向一、flex-direction: (元素排列方向) ※ flex-direction:row (横向从左到右排列==左对齐)※ flex-direction:row-reverse (与row 相反)※ flex-direction:column (从上往下排列==顶对齐)※ flex-direction:column-reverse (与column 相反) 二…

基于导频的信道估计实现

目录 零、前言 一、为什么要信道估计 二、导频的概念 &#xff08;1&#xff09;为什么要有导频 &#xff08;2&#xff09;导频在信道估计中作用 &#xff08;3&#xff09;关于导频序列的补充 三、最小二乘法估计 &#xff08;1&#xff09;LS信道估计算法分析 &…

24.登录form的显示

1.概括 本次博客的代码就不自己去写输入框了&#xff0c;直接去引用element官网中的就好。 具体如何实现可以去订阅Vue专栏中的最后两节课噢&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;2.操作方法 打开element官网 https://element.eleme.cn/…

TRC丨艾美捷TRC 那非那韦亚砜说明书

艾美捷TRC Nelfinavir Sulfoxide 是 Nelfinavir Mesylate (N389750) 的杂质。Nelfinavir USP 相关化合物 A。 艾美捷TRC 那非那韦亚砜化学性质&#xff1a; 目录号N389770 化学名称那非那韦亚砜 同义词(3S,4aS,8aS)-N-(1,1-二甲基乙基)十氢-2-[(2R,3R)-2-羟基-3-[(3-羟基-2-…

合宙AIR32F103CBT6刷回CMSIS-DAP固件以及刷ST-LINK V2-1固件方法

合宙AIR32F103CBT6刷回CMSIS DAP固件以及刷ST-LINK V2-1固件方法&#x1f4cc;官方介绍文档:https://wiki.luatos.com/chips/air32f103/index.html&#x1f4cd;原理图&#xff1a;https://cdn.openluat-luatcommunity.openluat.com/attachment/20220605164915340_AIR32CBT6.pd…

从零备战蓝桥杯——动态规划(递推篇)

双非刷leetcode备战2023年蓝桥杯&#xff0c;qwq加油吧&#xff0c;无论结果如何总会有收获&#xff01;一起加油,我是跟着英雄哥的那个思维导图刷leetcode的&#xff0c;大家也可以看看所有涉及到的题目用leetcode搜索就可以哦&#xff0c;因为避让添加外链&#xff0c;一起加…

简历石沉大海?来围观月薪 20k 的软件测试工程师真实简历...

​前言&#xff1a;面试的重要性 在互联网公司&#xff0c;你面试的时候能拿到多少 k 薪资&#xff0c;基本上决定了你未来 1-2 年的工资&#xff0c;这个非常现实。软件测试工程师在企业中俩内年想涨工资非常难的&#xff0c;就算有涨&#xff0c;涨幅也不大。当然不排除你待…

前置句与倒装句练习题

1. 特殊语序&#xff1a;前置 1.All the information you need I am putting in the post today. 2.Any item in our catelogue we can supply and deliver 3.How she got the gun through customs they never found out. 4.The kitchen we are planning to redecorate in the…

Day25Linux获取命令帮助,压缩与解压缩,vim编辑器使用,Linux系统下载软件,通过yum方式安装软件

命令字的帮助信息的查询 rm -fr fdisk -l ls ls -l ls -出现许多.开头的文件隐藏文件 Linux命令字格式 命令字 [选项] 命令字 [选项] 文件或目录 ls哪些选项&#xff1f; 1.如何查看一个命令字的帮助手册&#xff1f; man man ls 按q退出 ls -a显示隐藏文件 ls -l显示文件的详…

Chap4 循环结构 学习总结 第五小组

1、为什么需要循环?: 在 c语言中需要重复执行某些操作时,需要用到循环结构 2、循环的三个语句: for循环、while循环、do-while循环。 下列是while循环和for循环的流程图3、三种循环语句的表达式: (1)while(进入循环条件)循环体语句; (2)do {循环体语句;}while(进…

LVS负载均衡—DR模式

内容预知 1.DR模式的特点 2.LVS-DR中的ARP问题 2.1 问题一&#xff1a;VIP地址相同导致响应冲突 问题原因&#xff1a; 解决方法&#xff1a; 2.2 问题二&#xff1a;返回报文时源地址使用VIP&#xff0c;导致网关设备的ARP缓存表紊乱 问题原因&#xff1a; 解决方法&…

GitHub爆火,一份从零到1「架构师成长手册」,原来成为架构师也有捷径

架构师】我想应该没有哪个程序员会陌生了吧&#xff0c;作为一个程序员技术追求的里程碑&#xff0c;有多少程序员想转型架构师而不得门路&#xff0c;其实架构师比较抽象的拆解能力就两方面技术项目足够的技术栈深度和广度再加上足够的项目经验其实是完全可以驾驭架构师的岗位…

QFramework v1.0 使用指南 架构篇:05. 引入 Utility

05. 引入 Utility 在这一篇&#xff0c;我们来支持 CounterApp 的存储功能。 其代码也非常简单&#xff0c;只需要修改一部分 Model 的代码即可&#xff0c;如下&#xff1a; // 定义一个 Model 对象public class CounterAppModel : AbstractModel{private int mCount;public…