一个轻量级的Unity开发工具脚手架,提供游戏开发常用功能模块的标准化实现。包含事件管理、输入控制、本地化、对象池等核心系统,支持快速构建可维护的Unity应用。
📖 文档见各模块下README | 💡 提交Issue
本仓库所有README由Deepseek生成,某些功能别信它吹得这么邪乎,我自己的水平我还是有底的。
| 模块 | 功能亮点 | 关键特性 |
|---|---|---|
| 事件系统 | 松耦合通信 | 特性驱动订阅、多参数事件、自动生命周期管理 |
| 输入管理 | 可配置按键 | 动态绑定、冲突检测、多平台支持 |
| 本地化 | 多语言支持 | 智能占位符、UI自动更新、系统语言适配 |
| 对象池 | 高效对象复用 | 自动扩容、异常处理、跨场景持久化 |
| 屏幕适配 | 智能宽高比 | 自动黑边处理、编辑器实时预览 |
| 单例系统 | 全局访问 | 自动初始化、线程安全、场景持久化 |
- Unity 2022.3+
- .NET 4.x
- 克隆仓库到Unity项目:
git clone https://github.com/cneicy/ShrinkFramework.git- 将
Assets/Scripts目录导入Unity工程
// 初始化框架核心
SingletonAutoInitializer.InitializeAllSingletonTypes();
// 事件注册与触发
EventManager.Instance.RegisterEvent<int>("PlayerAttack", damage => {
Debug.Log($"造成伤害: {damage}");
return null;
});
EventManager.Instance.TriggerEvent("PlayerAttack", 50);
// 本地化文本获取
string welcome = LocalizationManager.Instance.Get("ui.welcome", "Player1");
// 对象池使用
var bullet = PoolManager.Get<Bullet>("bullet_pool");
PoolManager.Release("bullet_pool", bullet);[EventSubscribe("OnLevelUp")]
public object HandleLevelUp(int newLevel)
{
// 处理升级事件
return new { success = true };
}- 特性驱动自动订阅
- 支持泛型参数和返回值
- 对象级生命周期管理
// 动态修改按键绑定
KeySettingManager.Instance.SetKey("Jump", KeyCode.Space);
// 获取当前输入方向
Vector2 moveInput = KeySettingManager.Instance.Direction;- 支持按键冲突检测
- 配置自动持久化
- 多设备输入适配
// 带参数的本地化文本
string text = LocalizationManager.Instance.Get(
"quest.reward",
100,
DateTime.Now.ToString("d")
);- 支持动态参数替换
- 自动检测系统语言
- 实时UI更新
PoolManager.CreatePool("enemies", prefab, 10, 20);
var enemy = PoolManager.Get<Enemy>("enemies");
PoolManager.Release("enemies", enemy);- 自动容量维护
- 异常安全机制
- 支持批量操作
// 设置21:9超宽屏适配
GetComponent<ScreenAspector>().targetAspect = 21f / 9f;- 智能黑边处理
- 编辑器实时预览
- 动态分辨率适配
Assets/Scripts/
├
├── Events/ # 事件管理系统
├── Input/ # 输入管理系统
├── Localization/ # 本地化系统
├── Singleton/ # 单例基类
├── ObjectPool/ # 对象池系统
└── ScreenAspect/ # 屏幕适配
- 事件命名规范:使用
模块动作格式(例:PlayerJump) - 按键配置:通过事件系统监听配置变更
- 本地化键管理:使用分层命名(
ui.menu.start) - 对象池选择:高频创建对象优先使用池
- 单例使用:核心管理类继承
Singleton<T>
欢迎通过Issue和PR参与贡献:
- Fork仓库并创建特性分支
- 遵循现有代码风格(C#命名规范)
- 添加必要的单元测试
- 更新相关文档
- 提交Pull Request
本项目采用 MIT License,可自由用于商业项目。