02《F8Framework》核心入口 FF8.cs

FF8.cs类是 F8Framework的核心入口 采用单例模式 提供对各个功能模块的全局访问

【特点】通过静态类FF8统一访问所有功能

1.模块化设计:                               每个功能独立 通过 ModuleCenter 统一管理

2.懒加载机制:                               模块在首次访问时才会初始化

3.单例模式:                                   确保全局唯一访问点

4.依赖注入:                                   部分模块可以自定义实现

1.全局消息系统 MessageManager

private static MessageManager _message;

解释:- 提供发布 订阅模式 的 消息系统

(1)解耦模块间通信

(2)支持事件监听和触发

(3)可跨模块传递数据

(4)依赖:无

(5)使用场景:游戏状态变更、UI事件、自定义游戏事件

2.输入管理系统 InputManager

private static InputManager _inputManager;

解释:- 统一管理各种输入方式

(1)默认使用 DefaultInpuHelper 实现

(2)可自定义输入处理逻辑

(3)封装了键盘、鼠标、触摸等输入事件

(4)依赖:MessageManager

(5)使用场景:玩家控制、UI交互

3.本地存储系统 StorageManager

private static StorageManager _storage;

解释:- 本地数据持久化存储

(1)键值对存储

(2)支持加密存储

(3)自动序列化 与 反序列化

(4)依赖:无

(5)使用场景:玩家存档、游戏配置、本地缓存

4.游戏时间管理 TimerManager

private static TimerManager _timer;

解释:- 游戏内 计时管理

(1)支持倒计时、间隔触发

(2)游戏暂停时自动暂停

(3)精确的时间控制

(4)依赖:MessageManager 时间事件通知

(5)使用场景:游戏倒计时、技能冷却、定时任务

5.游戏流程状态管理 ProcedureManager

private static ProcedureManager _procedure;

解释:- 游戏流程 的状态管理

(1)基于有限状态机

(2)流程切换自动处理

(3)支持流程栈

(4)依赖:无

(5)使用场景:游戏关卡流程、UI流程控制

6.网络通信管理 NetworkManager

private static NetworkManager _networkManager;

解释:- 网络请求 与 通信

(1)封装HTTP / WebSocket通信

(2)支持请求队列

(3)自动重连机制

(4)依赖:无

(5)使用场景:服务器通信、数据同步、在线功能

7.有限状态机管理 FSMManager

private static FSMManager _fsm;

解释:- 状态机系统

(1)管理 多个 状态机实例

(2)状态切换回调

(3)状态历史记录

(4)依赖:无

(5)使用场景:游戏状态、角色状态、AI行为

8.游戏对象池 GameObjectPool

private static GameObjectPool _gameObjectPool;

解释:- 游戏对象 的复用 管理

(1)自动创建 F8PoolGlobal 全局对象池

(2)减少实例化 / 销毁 开销

(3)预加载功能

(4)依赖:无

(5)使用场景:频繁创建销毁的对象

9.资源管理系统 AssetManager

private static AssetManager _asset;

解释:- 资源加载 与 管理

(1)支持同步 / 异步加载

(2)资源引用计数

(3)自动卸载未使用资源

(4)依赖:无

(5)使用场景:场景、预制体、纹理等资源加载

10.配置表管理 F8DataManager

private static F8DataManager _config;

解释:- Excel配置表数据管理

(1)自动解析Excel数据

(2)数据缓存

(3)支持热更新

(4)依赖:AssetManager 加载配置表资源

(5)使用场景:关卡设置、游戏平衡数据、本地化文本

11.音频管理 AudioManager

private static AudioManager _audio;

解释:- 游戏音频播放控制

(1)背景音乐管理

(2)音效池

(3)音量控制

(4)依赖:AssetManager       加载音频资源

                    GameObjectPool   音效实例管理

                    Tween                    音频渐变效果

                    TimerManager        音频定时控制

(5)使用场景:游戏音效 effect、背景音乐 bgm

12.补间动画系统 Tween

private static Tween _tween;

解释:- 属性动画系统

(1)平滑过渡效果

(2)支持多种缓动函数

(3)链式调用

(4)依赖:无

(5)使用场景:UI动画、对象移动、颜色渐变

13.UI界面管理 UIManager

private static UIManager _ui;

解释:- UI界面生命周期管理

(1)界面栈管理

(2)自动绑定UI事件

(3)界面预加载

(4)依赖:AssetManager 加载UI预制体

(5)使用场景:游戏所有UI界面

14.本地化系统 Localization

private static Localization _localization;

解释:- 多语言支持

(1)动态切换语言

(2)文本、图片本地化

(3)支持格式化文本

(4)依赖:F8DataManager   加载本地化数据

                    AssetManager      加载本地化资源

(5)使用场景:多语言游戏

15.SDK集成管理 SDKManager 

private static SDKManager _sdkManager;

解释:- 第三方SDK集成

(1)统一接口封装

(2)平台差异化处理

(3)登录 / 支付等通用功能

(4)依赖:MessageManager SDK事件通知

(5)使用场景:平台登录、支付、广告等SDK功能

16.下载管理 DownloadManager

private static DownloadManager _downloadManager;

解释:- 文件下载管理

(1)断点续传

(2)多任务并行

(3)进度回调

(4)依赖:无

(5)使用场景:热更新资源下载、动态内容加载

17.日志系统 F8LogWriter

private static F8LogWriter _logWriter;

解释:- 日志记录 与 管理

(1)分级日志 Debug / Info / Warning / Error

(2)文件日志

(3)日志过滤

(4)依赖:无

(5)使用场景:调试、错误追踪

18.热更新管理 HotUpdateManager

private static HotUpdateManager _hotUpdateManager;

解释:- 游戏热更新

(1)差异更新

(2)版本控制

(3)更新回滚

(4)依赖:DownloadManager   下载更新包

                    AssetManager          加载更新资源

(5)使用场景:资源热更、游戏版本更新

使用示例

修改摄像机剔除模式 

创建空物体

给空物体挂在F8F的游戏启动器Game Launcher.cs

修改空物体名称为GameLauncher 游戏启动器

修改 GameLauncher.cs 脚本:

创建 InitState.cs 脚本 并修改脚本:

创建 GameState.cs 脚本 并修改脚本:

创建 Editor 文件夹 并创建脚本:BuildAssetBundles.cs

编写 BuildAssetBundles.cs 脚本:

using UnityEditor;
using System.IO;
using UnityEngine;public class BuildAssetBundles
{[MenuItem("Tools/Build AssetBundles")]  // 更直观的菜单路径static void BuildAllAssetBundles(){string outputPath = Path.Combine(Application.streamingAssetsPath, "AssetBundles");try{// 确保目录存在if (!Directory.Exists(outputPath))Directory.CreateDirectory(outputPath);// 打包 AssetBundleBuildPipeline.BuildAssetBundles(outputPath,BuildAssetBundleOptions.None,EditorUserBuildSettings.activeBuildTarget);Debug.Log($"AssetBundles 打包成功!路径:{outputPath}");// 刷新编辑器(显示新文件)AssetDatabase.Refresh();}catch (System.Exception e){Debug.LogError($"AssetBundle 打包失败:{e.Message}");}}
}

在Assets文件夹的AssetBundles文件夹创建 Scenes文件夹 并在子级中创建 名称为Main 的场景

设置 名为 Main场景 的 AsstetBundle 标签为 scenes/main

在Assets文件夹的AssetBundles文件夹创建 UI文件夹 并在子级中创建 名称为UIStartGame 的预制体

设置 预制体 UIStartGame 的 AsstetBundle 标签为 ui/uistartgame

回到 SampleScene场景 中运行游戏

End.

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

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

相关文章

【硬件】相机的硬件测试

相机测试 author: Alla Imatest 提供超过 30 种测试项目,主要包括: 1)图像基础参数‌:MTF(调制传递函数)、畸变、均匀性、动态范围 2)色彩与光学特性‌:白平衡误差、饱和度、gamma …

Profinet与Modbus TCP协议转换技术:西门子S7-1500(主站)和欧姆龙NJ PLC的高效数据交换

一、项目背景 某大型现代化智慧农业养殖场致力于打造全方位智能化的养殖环境。其养殖系统中,环境监测与调控部分选用了西门子S7-1500PLC作为Profinet协议主站。该PLC凭借强大的运算能力和丰富的功能模块,能够精准地采集和处理养殖场内的温度、湿度、空气…

希尔伯特变换,实信号转复信号的FPGA实现思路

希尔伯特变换将实信号转复信号的原理 将实信号的相位推迟90度后作为复信号的虚部。 错误实现方式 实信号经过希尔伯特滤波后得到复信号的虚部,之后直接与实信号组成复信号。而由于滤波器本身会对信号延时,故I路与Q路并不是相差90度,所以此方…

多模态大语言模型演进:从视觉理解到具身智能的技术突破

多模态大语言模型演进:从视觉理解到具身智能的技术突破 多模态大语言模型(MLLMs)正在重塑人工智能的边界,实现从"看见"到"理解"再到"行动"的全链条智能。本文将深入解析苹果最新多模态研究进展,揭示视觉-语言模型十年演进的技术脉络,剖析…

window显示驱动开发—渲染管道

支持 Direct3D 版本 10 的图形硬件可以使用共享可编程着色器核心进行设计。 GPU) (图形处理单元可以编程着色器核心,这些着色器核心可以跨构成呈现管道的功能块进行计划。 这种负载均衡意味着硬件开发人员不需要使用每种着色器类型,而只需要使用执行呈现…

时序数据库Apache IoTDB核心技术深度解析

一、引言 ‌背景‌:5G技术加速了IoT领域的发展,物联网设备数据的收集、存储和计算需求日益增长。Apache IoTDB作为一款专为物联网时序数据设计的软件系统,在2020年被Apache基金会认可为顶级项目。 二、IoT领域发展趋势 ‌5G与IoT‌&#x…

Next.js面试题:API深度解析

Next.js面试题:API深度解析 Next.js 通过 App Router 的引入彻底改变了 Web 开发范式。在这个新时代,深入理解 Next.js 的 API 函数不再只是锦上添花,而是技术面试中的关键区分点。这些函数构成了构建高性能、可扩展、现代化 Web 应用的基石…

Docker-MCP quickstart

项目概述 Docker-MCP 是一个 支持mcp的Docker 管理服务器,它允许 客户端 通过 MCP(Model Control Protocol)接口直接与 Docker 进行交互。该项目提供了一套工具,使 AI 助手能够创建容器、部署 Docker Compose 、获取容器日志以及…

git 的变基操作(适合一个功能进行了多次commit提交,提交记录过多不美观)

git提交的 commit 的记录很多,想多个 commit 进行合并,对代码进行整理,帮助更好的阅读代码 IDEA 的操作步骤: 这里,给出你想进行合并的记录 hash 值,完了点击“Rebase”进行合并 点击后,会进行…

【完整源码+数据集+部署教程】路边广告牌实例分割系统源码和数据集:改进yolo11-SEAMHead

研究背景与意义 研究背景与意义 随着城市化进程的加快,路边广告牌作为重要的商业宣传媒介,越来越多地出现在城市的各个角落。它们不仅承担着信息传播的功能,还对城市的视觉环境产生了深远的影响。然而,随着广告牌数量的激增&…

C++ 中文件 IO 操作详解

在C中,文件操作是通过流(stream)来实现的。标准库提供了三种主要的文件流类来处理文件IO操作: ofstream:用于写入文件(output file stream)ifstream:用于读取文件(input file stream&#xff0…

第32节 Node.js 全局对象

在Node.js中我们可以直接访问到全局对象。 这些对象在所有模块里都是可用的,有些对象不是在全局作用域而是在模块作用域里,这些情况将在本文的内容中进行介绍。 global {Object} 全局命名空间对象。 在浏览器中,全局作用域就是顶级域。如…

Linux文件属性和权限概述-linux026

Linux文件属性和权限概述 Linux 系统作为多用户操作系统,通过文件属性和权限机制来控制不同用户对文件和目录的访问,从而保证系统的安全性。不同的用户对同一文件可以有不同的访问权限,这些权限包括 读取(read)、写入…

nuScenes介绍

目标检测指标 指标内容mAP(mean Average Precision)bev下2d中心点的距离来评价,而不是像2d检测里用iou来评价mATE(Average Translation Error)中心点的2D欧式距离mASE(Average Scale Error)中心…

带中断计数器的UART接收中断程序 (8259@400H/402H)

1.程序功能 在中断服务程序中增加了中断计数器,并在主循环中通过串口输出中断次数。 2.验证 2.1手动触发8259的IR1,高电平有效 2.2串口接收 3.测试程序 ; You may customize this and other start-up templates; ; The location of this template is…

在Postgresql中跟踪SQL语句

文章说明 本文主要说明如何在Postgresql中跟踪实际执行的SQL语句。 本文内容有如下应用场景: 在系统中执行了一系列的操作,需要将这些操作转化成SQL在正式环境上一次性执行,省下重新执行一遍的操作时间。最近系统数据被人或被程序修改导致…

【信创-k8s】重磅-鲲鹏arm+麒麟V10离线部署k8s1.30+kubesphere4.1.3

随着信创产业的推进,鲲鹏arm64架构得以快速发展。而由于信创领域的主要客户通常部署在内网环境中,这使得离线部署成为该架构方案实施过程中不可或缺的关键环节。 **环境涉及软件版本信息** 服务器芯片: **鲲鹏920/飞腾2000(arm64)** 操作系统&#xff…

第11章:Neo4j实际应用案例

理论知识和技术细节固然重要,但真正理解Neo4j的价值在于了解它如何解决实际业务问题。本章将探讨Neo4j在各个领域的实际应用案例,包括社交网络分析、推荐系统、知识图谱以及欺诈检测与安全分析。通过这些案例,读者可以了解如何将前面章节学到…

数字图像处理与OpenCV初探

什么是数字图像处理? 当今时代,数字图像无处不在。手机拍照、安防监控、医疗检查、地图导航、工业质检……我们每天都在接收、分析和处理大量图像信息。对于计算机而言,图像并不是一张“看得懂”的照片,而是由数值组成的矩阵。如何…

ubuntu网络连接失败 + mobaxterm拖拽文件出错等问题解决方法

网络连接问题&#xff0c;表现在不能通过源下载以及更新 终端问题显示【通过 ip a 命令获得】 kejiubuntu:~/Desktop$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00…