# Unity_Flag_Framework
**Repository Path**: sinner13y/unity-flag-gameframework
## Basic Information
- **Project Name**: Unity_Flag_Framework
- **Description**: 一个基于Unity引擎的游戏框架,提供了游戏开发中常用的功能模块,包括数据存储、消息系统、UI管理、音频管理、视频播放等。
- **Primary Language**: C#
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-09-23
- **Last Updated**: 2025-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Unity GameFrame
一个基于Unity引擎的游戏框架,提供了游戏开发中常用的功能模块,包括数据存储、消息系统、UI管理、音频管理、视频播放、广告控制等。
## 许可证
本项目采用MIT许可证,详情请查看[LICENSE](LICENSE)文件。
## 功能模块
### 1. 广告系统 (Ads)
管理不同平台的广告展示,目前支持微信小游戏平台和编辑器环境下的广告模拟。
主要类和功能:
- [AdManager.cs](Ads/AdManager.cs) - 广告管理器,提供统一的广告调用接口
- [AdChannelEnum.cs](Ads/AdChannelEnum.cs) - 广告渠道枚举定义
- [AdConfig.cs](Ads/AdConfig.cs) - 广告配置相关类
- [AdSettings.cs](Ads/AdSettings.cs) - 广告设置类,包含各平台广告ID配置
- [AdStatus.cs](Ads/AdStatus.cs) - 广告状态枚举
- [IADExample.cs](Ads/IADExample.cs) - 广告接口定义
- 渠道实现:
- [OnEditorContent.cs](Ads/Channel/OnEditorContent.cs) - 编辑器环境下广告模拟实现
- [WeChatADContent.cs](Ads/Channel/WeChatADContent.cs) - 微信平台广告实现
- [广告README](Ads/README.md) - 广告系统使用说明
### 2. 数据存储 (DataStorage)
提供本地数据持久化存储解决方案,支持多种数据类型的读写操作。
主要类和功能:
- [DataStorage.cs](DataStorage/DataStorage.cs) - 核心数据存储系统,支持本地数据持久化
- [Savable.cs](DataStorage/Savable.cs) - 可存储对象基类,提供数据自动保存功能
使用示例:
```csharp
// 存储布尔值
DataStorage.SetBool("isFirstPlay", false);
// 获取布尔值
bool isFirstPlay = DataStorage.GetBool("isFirstPlay", true);
///
/// 高性能自动保存字段使用示例
///
public class PlayerData : Savable
{
// 使用新的简化方式创建AutoSaveProperty
public override string Key => "Player";
[AutoSave]
public AutoSaveField score { get; private set; } = (AutoSaveField)5;
[AutoSave]
public AutoSaveField playerName { get; private set; } = (AutoSaveField)"Player";
[AutoSave]
public AutoSaveField isFirstPlay = (AutoSaveField)true;
internal override void Init()
{
}
}
// 获取存储的数据实例
PlayerData playerData = DataStorage.GetSavable();
```
### 3. 游戏核心 (Game)
提供游戏运行所需的基础服务,如全局协程、定时器、任务系统等。
主要类和功能:
- [GameState.cs](Game/GameState.cs) - 游戏状态管理
- [GameTimer.cs](Game/GameTimer.cs) - 游戏计时器系统
- [GlobalCoroutine.cs](Game/GlobalCoroutine.cs) - 全局协程管理器
- [Task.cs](Game/Task.cs) - 任务系统
- [TaskState.cs](Game/TaskState.cs) - 任务状态定义
### 4. 消息系统 (Message)
实现松耦合的组件间通信机制,避免直接引用造成的紧耦合。
主要类和功能:
- [MessageComponent.cs](Message/MessageComponent.cs) - 消息组件
- [MessageDataInterface.cs](Message/MessageDataInterface.cs) - 消息数据接口
- [MessageDefine.cs](Message/MessageDefine.cs) - 消息定义
- [MessageSys.cs](Message/MessageSys.cs) - 消息事件处理
- [MessageListener.cs](Message/MessageListener.cs) - 消息监听器
使用示例:
```csharp
// 添加消息监听器
MessageListener listener = MessageSys.AddNode(gameObject , "ui");
listener.Listener("GameOver", OnGameOver)
.Listener("LevelUp", OnLevelUp);
// 发送消息
MessageSys.SendMessage("GameOver", score);
MessageSys.SendMessageType("LevelUp", level, "ui");
// 消息处理函数
private void OnGameOver(object data) {
int finalScore = (int)data;
// 处理游戏结束逻辑
}
```
### 5. 网络模块 (Network)
提供基本的网络请求功能,用于与后端服务器通信。
主要类和功能:
- [WebRequest.cs](Network/WebRequest.cs) - 网络请求基类,支持与服务器通信
### 6. 音频系统 (Sound)
统一管理游戏中背景音乐和音效的播放。
主要类和功能:
- [AudioController.cs](Sound/AudioController.cs) - 音频控制器
- [AudioManager.cs](Sound/AudioManager.cs) - 音频管理器,支持背景音乐和音效
- [AudioSavable.cs](Sound/AudioSavable.cs) - 音频设置存储
使用示例:
```csharp
// 播放背景音乐
AudioManager.PlayAudioClip(AudioPlayType.Music, "background");
// 播放音效
AudioManager.PlayAudioClip(AudioPlayType.SoundEffects, "click");
// 设置音量
AudioManager.SetMusicVolume(0.8f);
AudioManager.SetSoundVolume(0.6f);
// 开关音乐/音效
AudioManager.SwitchMusic(true);
AudioManager.SwitchSound(true);
```
### 7. UI系统 (UI)
提供完整的UI管理方案,包括层级管理、界面推拉栈等。
主要类和功能:
- [UICanvas.cs](UI/UICanvas.cs) - UI画布管理
- [UIItemBase.cs](UI/UIItemBase.cs) - UI项基类
- [UILayer.cs](UI/UILayer.cs) - UI层级定义
- [UIManager.cs](UI/UIManager.cs) - UI管理器,负责UI的创建和管理
- [UIViewBase.cs](UI/UIViewBase.cs) - UI视图基类
- 扩展组件:
- 圆形图像 (CircleImage)
- 反向遮罩 (InvertMask)
- 雷达图 (RadarChart)
使用示例:
```csharp
// 推入一个UI视图
UIManager.Push("MainMenu");
// 弹出当前UI视图
UIManager.Pop();
// 创建一个UI项
UIManager.CreatorItem("CoinDisplay", UILayer.Top, true, coinCount);
// 关闭所有UI
UIManager.CloseAll();
```
### 8. 视频系统 (Video)
支持视频播放和预加载功能,适用于游戏开场动画或教程视频等场景。
主要类和功能:
- [IVideo.cs](Video/IVideo.cs) - 视频播放接口
- [VideoController.cs](Video/VideoController.cs) - 视频控制器
- [VideoManager.cs](Video/VideoManager.cs) - 视频管理器
- [VideoPreloader.cs](Video/VideoPreloader.cs) - 视频预加载器
- [WXVideoController.cs](Video/WXVideoController.cs) - 微信小程序视频控制器
### 9. 工具类 (Tools)
提供各种实用工具类,简化开发过程。
主要类和功能:
- [AntiAddictionSystem.cs](Tools/AntiAddictionSystem.cs) - 防沉迷系统
- [BuiltinDelegate.cs](Tools/BuiltinDelegate.cs) - 内建委托
- [RandomExtensions.cs](Tools/RandomExtensions.cs) - 随机扩展方法
- [ScriptReflection.cs](Tools/ScriptReflection.cs) - 脚本反射工具
- [UnityExtensions.cs](Tools/UnityExtensions.cs) - Unity扩展方法
### 10. 其他
- [LoadAssets.cs](LoadAssets.cs) - 资源加载
- [Log.cs](Log.cs) - 日志系统
- [ModuleBase.cs](ModuleBase.cs) - 模块基类
## 使用说明
1. 将此框架导入到Unity项目中
2. 根据需要使用相应的模块
3. 可以继承基类来扩展功能
在使用框架之前,请确保在Resources目录下创建FrameworkSetting.asset配置文件,并将其放在Resources目录中。
## 注意事项
- 本框架基于Unity开发,需要Unity引擎支持
- 各模块之间相对独立,可根据项目需求选择使用
- 部分模块可能需要额外的依赖库
- 框架使用自定义日志系统Log,不建议使用UnityEngine.Debug
## API文档
框架提供了完整的API文档,详细说明了每个模块的类、方法和使用示例。请参阅 [API_DOCUMENTATION.md](API_DOCUMENTATION.md) 获取更多信息。
## 贡献
欢迎提交Issue和Pull Request来改进这个框架。