首页 > 其他分享 >QFramework v1.0 使用指南 介绍篇:01. 简介

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

时间:2022-10-17 10:02:31浏览次数:73  
标签:01 QFramework gitee v1.0 github https QF com

大家好,我是 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.cs QFramework 本体架构的实现
QFramework.cs 示例 QFramework.cs 与官方示例: CounterApp、《点点点》、FlappyBird、CubeMaster、ShootingEditor2D、贪吃蛇等 github|gitee
QFramework.Toolkits QFramework 集成 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 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
其他相关教程
《独立游戏体验计划》(猫叔) 独立游戏制作体验教程,有用到 QFramework.cs b 站
《原创独立游戏制作》(凉鞋) 原创独立游戏制作教程,有用到 QFramework.cs b 站

典型的 QFramework.cs 架构代码

namespace QFramework.Exmaple
{
    public class CounterAppController : MonoBehaviour , IController
    {
        // View
        private Button mBtnAdd;
        private Button mBtnSub;
        private Text mCountText;
        
        // Model
        private 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

源码地址:

image.png

案例《扫雷》

作者:Joker

172348_4d54744e_5161625.webp

源码地址:

image.png

本教程简介

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

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

更多内容

标签:01,QFramework,gitee,v1.0,github,https,QF,com
From: https://www.cnblogs.com/liangxiegame/p/16798102.html

相关文章

  • QFramework v1.0 使用指南 介绍篇:02.Roadmap-路线图
    将来也许sLua、toLua、xLua、ILRuntime支持Pro版本推进ArchitectureDesigner使用可视化设计架构,一键生成架构代码ResKit支持自定义目录方案UIKit支持多个C......
  • QFramework v1.0 使用指南 架构篇:02. QFramework 的 MVC
    QFramework基于MVC的开发模式所以我们先从最熟知的MVC架构开始着手QFramework的学习。我们先做一个非常简单的计数器应用。首先我们使用UGUI创建一个最简单的......
  • QFramework v1.0 使用指南 架构篇:01. QFramework 架构简介
    QFramework架构是一套简单、强大、易上手的系统设计架构。这套架构的特性如下:基于MVC分层(可选)CQRS支持(可选)事件驱动(可选)数据驱动(可选)IOC模块化(可选)......
  • QFramework v1.0 使用指南 架构篇:03. 引入 Command
    我们回顾一下目前的代码,如下;usingUnityEngine;usingUnityEngine.UI;namespaceQFramework.Example{//1.定义一个Model对象publicclassCounter......
  • 1. [2001年NOIP提高组] 一元三次方程求解
    1.[2001年NOIP提高组]一元三次方程求解思路:暴力枚举法在根的范围里从小到大枚举x的范围(因为x要精确到小数点后2位,所以我们枚举的时候就直接精确到后三位)若存在两个数x......
  • 2. [2001年NOIP提高组] 数的划分
    2.[2001年NOIP提高组]数的划分将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5;1,5,1;5,1,1;问有多少种不同的分......
  • VS2019中文输出乱码解决方法(C语言)
    现象:VS2019控制台输出中文乱码   第一种解决方法:安装插件FormatonSave重启VS2019生效  (!!!注意:别装错了,刚开始我就装错了这个UTF-8(NoBOM),装了这个插件的同学,记......
  • 肖sir__性能__基础01
    1、什么样的sql需要我们去优化?(1)查询时间比较长的sql(2)出现次数较多的sql2、性能测试技能树(1)开发语言 java语言(运用广)、python语言、go语言(2)操作系统  linux做性......
  • |软件技术基础|<>||-----------|-----------||介绍我自己|<详细的介绍我自己的兴趣爱
    软件技术基础https://edu.cnblogs.com/campus/zjlg/22rjjc这个作业的目标<了解博客园,详细的介绍我自己>姓名-学号<王芳>-<2020330301057>一、自我介......
  • 01java入门
    java入门Java三大版本JavaSE:标准版(桌面程序,控制台开发)JavaME:嵌入式开发JavaEE:E企业级开发(web端,服务器开发)JDK、JRE、JVMJDK:包含JRE、JVM、java(解释器)、jav......