当前位置: 首页 > news >正文

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.

相关文章:

  • Javaweb学习day4——(MVC架构模式)
  • 2.SQL语句分类
  • vue2和vue3的底层逻辑原理、区别、用法以及应用优缺点
  • Day54打卡 @浙大疏锦行
  • 《棒球百科》棒球怎么玩·棒球9号位
  • 阿里云OSS任意文件写入/删除漏洞修复方案
  • node中Token刷新机制:给你的数字钥匙续期的奇妙之旅
  • 105. Java 继承 - 静态方法的隐藏
  • 深度学习——基于卷积神经网络实现食物图像分类【2】(数据增强)
  • 【AI论文】Saffron-1:LLM安全保证的推理缩放范例
  • Vue 项目路由模式全解析:从 hash 到 history 再到 abstract
  • vue相关爬坑总结
  • 火山引擎解码生态型增长铁律
  • K8s 容器化安全产品性能问题排查指南
  • 构建高性能日志系统:QGroundControl日志模块深度解析
  • 【大模型应用开发】向量数据库向量检索方法存在问题及优化
  • 2GT 环形闭口闭环同步带一种具有特定齿形和结构的传动带
  • Qwen2.5-VL 是什么?
  • 说说聚合路由器
  • 串口115200波特率一秒传输几个字节数据
  • 网站建设百科/google代理
  • 我想创建一个网站/如何实现网站的快速排名
  • wordpress 新浪微博分享/湖南靠谱seo优化报价
  • 漳州网站建设公司首选公司/广东疫情最新消息今天又封了
  • 黑龙江建设培训网站/独立站seo
  • 网站在线客服插件代码/北京今日重大新闻