【Unity 3D】GameFramework、QFramework框架简介及应用实战(超详细 附源码)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【Unity 3D】GameFramework、QFramework框架简介及应用实战(超详细 附源码)

需要框架资源包和源码请点赞关注收藏后评论区留言私信~~~

框架,又称软件框架,这个词最初是建筑学概念,意思是一个框子,指其约束性,也是一个架子,指其支撑性,一个基本概念的结构,用于解决或处理复杂的问题。

框架这个定义十分流行,尤其在软件领域,叫做软件框架,软件框架,通常是为了实现某个业界标准或完成特定基本人物的软件组件规范,也是指为了实现某个软件组成规范时,提供贵伐要求的基础功能的软件产品

简而言之,框架就是制定一套规范或者规则,大家在该规范或规则下工

框架就是为了在一定的规则限定下,让程序具有可靠性,安全性,可伸缩性,可定制性,可拓展性以及可维护性。

常见的框架有MVC三层框架,下面介绍Unity 3D中的Gameframework和QFramework进行简单讲解

1:GameFramework框架

GameFramework是一个基于Unity引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,最大限度的规范了开发过程,加快了开发速度并保证了产品质量 该框架适用于所有Unity 5.3.0及以上的版本

完整的GameFramework框架由GameFramework Unity UnityGameFramework以及Game四部分组成,GameFramework框架如下图所示

将GameFramework.unitypackage导入项目中

导入后 工程目录如下

GameFramework文件夹是框架的全部内容 其中

Libraries存放GameFramework.dll核心框架和一些框架必须的第三方库

Prefabs存放预制体 用于快速创建一个游戏框架启动场景

Scripts存放Runtime和Editor代码

Example文件夹是一个示例目录其中

Example.unity是一个含有GameFramework对象的空场景,作为游戏启动场景

ProcedureExample.cs是一个示例流程代码文件 示例将以这个流程作为启动流程

接下来 用GameFramework的方式在控制台中打印Hello World的日志

脚本代码如下

using GameFramework;
using GameFramework.Procedure;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
namespace GameFrameworkExample
{
    public class ProcedureExample : ProcedureBase
    {
        protected override void OnEnter(ProcedureOwner procedureOwner)
        {
            base.OnEnter(procedureOwner);
            string welcomeMessage = Utility.Text.Format("Hello Game Framework {0}.", Version.GameFrameworkVersion);
            // 打印调试级别日志,用于记录调试类日志信息
            Log.Debug(welcomeMessage);
            // 打印信息级别日志,用于记录程序正常运行日志信息
            Log.Info(welcomeMessage);
            // 打印警告级别日志,建议在发生局部功能逻辑错误,但尚不会导致游戏崩溃或异常时使用
            Log.Warning(welcomeMessage);
            // 打印错误级别日志,建议在发生功能逻辑错误,但尚不会导致游戏崩溃或异常时使用
            Log.Error(welcomeMessage);
            // 打印严重错误级别日志,建议在发生严重错误,可能导致游戏崩溃或异常时使用,此时应尝试重启进程或重建游戏框架
            Log.Fatal(welcomeMessage);
        }
    }
}

运行程序控制台打印信息,可以看到控制台根据不同级别分别输出了一条日志

将日志信息记录到文件中,为日志添加一个新的日志辅助器,它派生自默认的日志辅助器DefaultLogHelper 新建一个FileLogHelper.cs脚本 双击打开脚本 该脚本可以实现日志辅助器功能

该脚本代码如下

using GameFramework;
using System;
using System.IO;
using System.Text;
using UnityEngine;
using UnityGameFramework.Runtime;
internal class FileLogHelper : DefaultLogHelper
{
    private readonly string CurrentLogPath = Utility.Path.GetRegularPath(Path.Combine(Application.persistentDataPath, "current.log"));
    private readonly string PreviousLogPath = Utility.Path.GetRegularPath(Path.Combine(Application.persistentDataPath, "previous.log"));
    public FileLogHelper()
    {
        Application.logMessageReceived += OnLogMessageReceived;
        if (File.Exists(PreviousLogPath))
        {
            File.Delete(PreviousLogPath);
        }
        if (File.Exists(CurrentLogPath))
        {
            File.Move(CurrentLogPath, PreviousLogPath);
        }
    }
    private void OnLogMessageReceived(string logMessage, string stackTrace, LogType logType)
    {
        string log = Utility.Text.Format("[{0}][{1}] {2}{4}{3}{4}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), logType.ToString(), logMessage ?? "<Empty Message>", stackTrace ?? "<Empty StackTrace>", Environment.NewLine);
        File.AppendAllText(CurrentLogPath, log, Encoding.UTF8);
    }
}

将日志辅助器设置为使用状态 运行程序后 所有输出到控制台的日志,都可以同时写入Application.persisitentDataPath下的current.log文件中

2:QFramework框架

QFramework是一套快速开发框架,可以满足任何类型的游戏以及应用项目的开发需求

QFramework提供了Manager Of Manager架构以及DVA单项数据流的架构,它还内置了UI Kit(UI工作流管理套件) Res Kit(资源工作流管理套件) UniRx(异步编辑)等强大的模块 在细节上提升开发效率

QFramework提供了一套插件平台,即PackageKit 平台上有丰富的拓展模块以及UI空间和Shader案例等等 软件开发人员可以按需自行下载使用

QFramework框架使用了Manager Of Manager(MOM)框架 框架方案如下图所示

QFramework导入

将QFramework框架包导入项目中

然后按组合键Ctrl+E 即可弹出QFramework可视化管理窗口

接下来 使用QFramework在控制台打印Hello World的日志

首先新建一个HelloQF.cs脚本 双击打开 代码如下

using UnityEngine;
using QFramework;
public class HelloQF : MonoBehaviour
{
    void Start()
    {
        //QFramework实现第一种Log方式
        // 打印调试级别日志
        Log.I("Hello World");
        // 打印警告级别日志
        Log.E("Hello World");
        // 打印错误级别日志
        Log.W("Hello World");
        //QFramework实现第二种Log方式
        "Hello World".LogInfo();
        "Hello World".LogWarning();
        "Hello World".LogError();
        //Unity自带Log方式
        Debug.Log("Hello World");
        Debug.LogWarning("Hello World");
        Debug.LogError("Hello World");
    }
}

运行程序 可以看到程序对应不同的级别都打印了hello world

创作不易 觉得有帮助请点赞关注收藏~~~

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
98 4
|
3月前
|
开发者 图形学 Java
揭秘Unity物理引擎核心技术:从刚体动力学到关节连接,全方位教你如何在虚拟世界中重现真实物理现象——含实战代码示例与详细解析
【8月更文挑战第31天】Unity物理引擎对于游戏开发至关重要,它能够模拟真实的物理效果,如刚体运动、碰撞检测及关节连接等。通过Rigidbody和Collider组件,开发者可以轻松实现物体间的互动与碰撞。本文通过具体代码示例介绍了如何使用Unity物理引擎实现物体运动、施加力、使用关节连接以及模拟弹簧效果等功能,帮助开发者提升游戏的真实感与沉浸感。
78 1
|
2月前
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
201 0
|
2月前
|
vr&ar 图形学 API
Unity与VR控制器交互全解:从基础配置到力反馈应用,多角度提升虚拟现实游戏的真实感与沉浸体验大揭秘
【8月更文挑战第31天】虚拟现实(VR)技术迅猛发展,Unity作为主流游戏开发引擎,支持多种VR硬件并提供丰富的API,尤其在VR控制器交互设计上具备高度灵活性。本文详细介绍了如何在Unity中配置VR支持、设置控制器、实现按钮交互及力反馈,结合碰撞检测和物理引擎提升真实感,助力开发者创造沉浸式体验。
147 0
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
150 0
|
3月前
|
开发者 图形学 API
从零起步,深度揭秘:运用Unity引擎及网络编程技术,一步步搭建属于你的实时多人在线对战游戏平台——详尽指南与实战代码解析,带你轻松掌握网络化游戏开发的核心要领与最佳实践路径
【8月更文挑战第31天】构建实时多人对战平台是技术与创意的结合。本文使用成熟的Unity游戏开发引擎,从零开始指导读者搭建简单的实时对战平台。内容涵盖网络架构设计、Unity网络API应用及客户端与服务器通信。首先,创建新项目并选择适合多人游戏的模板,使用推荐的网络传输层。接着,定义基本玩法,如2D多人射击游戏,创建角色预制件并添加Rigidbody2D组件。然后,引入网络身份组件以同步对象状态。通过示例代码展示玩家控制逻辑,包括移动和发射子弹功能。最后,设置服务器端逻辑,处理客户端连接和断开。本文帮助读者掌握构建Unity多人对战平台的核心知识,为进一步开发打下基础。
120 0
|
3月前
|
开发者 图形学 C#
揭秘游戏沉浸感的秘密武器:深度解析Unity中的音频设计技巧,从背景音乐到动态音效,全面提升你的游戏氛围艺术——附实战代码示例与应用场景指导
【8月更文挑战第31天】音频设计在游戏开发中至关重要,不仅能增强沉浸感,还能传递信息,构建氛围。Unity作为跨平台游戏引擎,提供了丰富的音频处理功能,助力开发者轻松实现复杂音效。本文将探讨如何利用Unity的音频设计提升游戏氛围,并通过具体示例代码展示实现过程。例如,在恐怖游戏中,阴森的背景音乐和突然的脚步声能增加紧张感;在休闲游戏中,轻快的旋律则让玩家感到愉悦。
84 0
|
3月前
|
vr&ar 图形学 开发者
步入未来科技前沿:全方位解读Unity在VR/AR开发中的应用技巧,带你轻松打造震撼人心的沉浸式虚拟现实与增强现实体验——附详细示例代码与实战指南
【8月更文挑战第31天】虚拟现实(VR)和增强现实(AR)技术正深刻改变生活,从教育、娱乐到医疗、工业,应用广泛。Unity作为强大的游戏开发引擎,适用于构建高质量的VR/AR应用,支持Oculus Rift、HTC Vive、Microsoft HoloLens、ARKit和ARCore等平台。本文将介绍如何使用Unity创建沉浸式虚拟体验,包括设置项目、添加相机、处理用户输入等,并通过具体示例代码展示实现过程。无论是完全沉浸式的VR体验,还是将数字内容叠加到现实世界的AR应用,Unity均提供了所需的一切工具。
135 0
|
5月前
|
存储 JSON 关系型数据库
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
159 2
|
5月前
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(上)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)
216 2