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.