Skip to content

nNnCoder/Instech

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Instech Framework

框架包含功能

分类 模块 完成状态
UI VP框架 完成
UI 导出生成代码 完成
UI 管理器 完成
UI 自带控件功能扩展 完成
UI 更多常用控件 完成
Productivity 日志增强 完成
Productivity 日志写入文件 完成
Productivity 游戏调试图表 完成
Productivity 查找资产所有引用 完成
Common AssetBundle打包和加载管理 待规划
Common 事件系统 完成
Common 单例模板 完成
Common 游戏状态机 完成
Common 本地化解决方案 待规划
Common 音频播放管理 待规划
Data 配置表管理 待规划
Data Sqlite数据库访问 待规划
Data 数据追踪 待规划
Data 可序列化的字典 待规划
Util 预定义宏管理 完成
Util 压缩功能 完成
Util 枚举标签 完成
Util 编译时间显示 完成
Util Yield优化 完成
Util 通用对象池 完成
Util 自动添加文件头注释 完成
Util 统一的配置入口 完成
Util 实用工具类 完成

功能介绍

UI-VP框架

VP即View-Presenter,UI采用界面逻辑分离的思路,方便UI人员随时修改且不会影响到具体的业务逻辑。

每一个UI界面都对应2个cs文件,FooView.csFooPresenter.cs。程序人员只在Presenter文件里进行开发,View文件是自动生成自动更新的,保存了需要程序访问的UI控件的引用。每当UI人员对界面进行了修改,直接导出View文件即可,不会影响到具体的业务逻辑,最大的好处是不需要人工在编辑器里一个一个地拖控件,一切都是自动化的。

UI-导出生成代码

根据Prefab中UI控件对象的命名,导出工具可以知道控件的类型,然后生成对应的代码,以便程序人员获取相应控件对象的引用。

亮点在于可以在编辑器而不是运行时去寻找UI控件的引用,大大减少了初始化所需时间。

当增加新的UI控件时,不会对业务逻辑造成任何影响。当删除现有的UI控件时,如果直接删除View文件中的引用,Presenter中的代码会编译失败,所以当UI人员删除控件时要提前通知程序人员,最好让程序人员来导出生成新的View代码。

UI-管理器

框架中的UI基于UGUI开发,全局只有一个Canvas,会在框架初始化时创建,并标记为DontDestroyOnLoad。提供UI界面的CRUD,分辨率自适应等功能。

特别介绍一点,UI界面关闭后并不会直接Destroy掉,而是通过调整坐标隐藏了起来,再次打开此界面时会先查找有没有被隐藏的此类界面,有则重新显示,否则创建一个新的。

UI-自带控件功能扩展

  1. Button增加了读写按钮文本(如果存在)的扩展方法
  2. ToggleGroup增加了统一回调,可以直接返回选中项的ID(需要手动设置)

UI-更多常用控件

暂时只加了一个进度条(ProgressBar),用于显示读取进度等。

Productivity-日志增强

把Unity自带的Debug.Log()封装了一层,实现了更多功能。现在可以自定义输出日志级别,支持设定日志所属模块,配合控制台增强可以按模块进行筛选。

Productivity-游戏调试图表

全屏的图表,随时间更新,支持多个指标如帧率等。一定程度上把Unity的Profile做在游戏里,方便在真机上调试。

Productivity-查找资产所有引用

在Project视图中右键单击一个资产如某个Texture,可以快速找到项目中有哪些Asset引用了这个Texture,结果在Console中显示。

Common-AssetBundle打包和加载管理

Common-事件系统

重新设计了一套事件机制,没有采用全局唯一的事件分发器,而是支持任意对象通过组合的方式使用派发器,只给与自己有关的监听者派发事件。比常用的全局派发器更灵活。

框架的UI事件就是基于这套事件系统实现的,每个需要发事件的UI控件都有自己的派发器,由相应的View监听,即一个监听者对应多个发送者。

游戏中常用的用法是给每一个Actor绑定一个派发器,关心某个事件的系统可以向这些Actor注册相应事件的监听,收到消息时可以很轻易的知道发送者是谁,以便进行进一步的处理。

Common-单例模板

很常用的单例模式,框架提供了普通单例类和单例MonoBehavior

Common-本地化解决方案

Common-音频播放管理

Data-配置表管理

Data-Sqlite数据库访问

Data-数据追踪

Data-可序列化的字典

Util-预定义宏管理

Util-压缩功能

Util-枚举标签

Util-编译时间显示

Util-Yield优化

在Unity中如果经常使用协程,则会经常用到如new WaitForEndOfFrame()的语句,这会导致许多无谓的GC。框架提供了常用Yield的缓存。

Util-通用对象池

Util-自动添加文件头注释

在每个新的C#脚本文件的头部都自动添加注释信息,包括创建日期,创建者,文件名,所属程序集等。

Util-统一的配置入口

用于UI代码导出路径,数据表导入路径,本地化表导入路径的配置。如果把路径写死在代码里不利于跨项目复用,所以就用EditorPrefs类实现了一个GUI的配置窗口。

Util-实用工具类

常用的工具函数,举例如下:

  1. 获取当前的Unix时间戳
  2. 根据名字递归寻找某GameObject下的所有子对象
  3. 计算字符串的MD5
  4. 返回数组、列表中的随机一个元素
  5. 根据指定权重随机返回结果

About

A Unity framework summarized by me

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%