Unity 游戏框架搭建 2019 (二十一、二十二) 第三章简介&整理前的准备
整理前的准备
到目前为止,我们积攒了很多示例了,并且每个示例也都贯彻了最的约定和规则。
在上一篇的小结也说了一个比较新的东西:编程体验优化。
在之前我们还积攒了一个问题:代码重复问题。
我们可是忍住整理的冲动忍了好久了。
所以现在也是时候准备着手整理了。
知识点和问题总结
遗留问题
我们写列出来之前记录的第一个问题:
- 第八个示例与之前的示例代码重复,功能重复。
这个问题想想就很好解决,只要删除掉第八个示例之前的示例就好了。但是怎么删和删完是否会破坏原来的功能?这两问题要具体看了代码才会知道。现在先不看,先把这个问题暂时列出来。
备份
代码要在之后的一段时间内要进行大幅度地更改,可能会改出问题来,如果问题比较难以解决就麻烦了。所以我们要给做一个份备份,如果出了问题我们可以通过备份恢复。如何备份其实有很多种,比较常见的是放在 git 服务器,不过这部分我们还没有接触过,所以先备份成文件。就用我们的导出功能导出,把文件进行命名。叫什么名字呢?这个问题也先列出来:
- 进行备份,给导出的文件取个名字。
约定和规则总结
首先我们到目前为止 QFramework 目录结构应该如下图所示:
笔者更希望除了除了了这 13 个示例之外,大家自己也收集了一些东西。
之所以目录的结构是这样,是因为我们在做每个示例的时候贯彻了我们的约定和规则。
那么我们的约定和规则现在是什么呢?
- 每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能
- 每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法。
- 每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了。
大概就这些,非常清晰明确。
示例诞生的原因类型
现在呢我们有 13 个示例,每个示例都有它诞生的原因的。但是这些诞生的原因又有点区别,我们逐个进行分析列出。
前七个示例是为了完成导出功能而进行的 Unity、C# API 的练习。因为在初期很多 API 我们是不知道的,大家应该在刚接触 Unity 的时候都经历过这一个阶段。
而完成导出功能的原因是为了优化我们的知识库导出体验,并且打造一个知识库的使用流程。有了导出功能可以让我们的知识库在多个项目之间切换或者在家和公司之间切换,而导出功能中的自动命名功能算是内置了我们的一部分命名规则。命名规则的存在呢是为了解决我们如果有多个文件不知道哪个是最新的问题。
所以前七个示例总结下来是解决了几个问题:
- 新的知识(API)收集,比如时间操作、文件打开、UnityEditor API 收集等。
- 内置了部分规则(比如文件命名)。
- 完成某个功能(导出功能),并完善。
- 导出功能的目的是为了让知识库的使用流程更平滑,是为了解决最初的问题。根据解决的问题去收集了 API,并逐步完善的导出功能。
- 逻辑复用,比如 MenuItem 复用。
前七个示例大概是这样。
接下来分析之后的几个示例:
8. 第八个示例诞生的原因,是为了解决我们的代码复用问题,使用 MenuItem 进行复用代码限制太多了,所以为此我们使用了 public 关键字,并且对前七个示例都进行了一次实践。在实践的过程中有逐步摸索出了一点方法设计的方法论。
9. 第九个示例是笔者分享的一个在项目中比较实用的分辨率检测小工具,这种小工具是解决实际的项目问题。
10. 第十个是示例节省了代码行数,因为每次为 transform.localPosition.x 赋值太麻烦了,要写三行代码,算是编码体验优化吧。
11. 第十一个示例是 Transform 重置功能,写了一个 Identity 方法,同样也是编码体验优化。
12. 第十二个示例是 一个概率函数,就是 Persent,是一种数学工具,在项目中也会用到,和第九个分辨率检测小工具一样,算是解决项目实际问题的小工具。
13. 第十三个示例呢是给 GameObject 的 Show 和 Hide 做了一步,原因是笔者刚转过来的时候不太适应 active 的这种命名,也算是编码体验优化。
大概是这些加上前七个总结再进行一次分类总结。
我们的知识库的每个示例诞生的原因分类:
- 知识、API 收集(为了完成导出功能)。
- 实现部分规则(命名规则)。
- 解决库本身使用及流程问题(导出功能)。
- 逻辑复用(MenuItem 和 public 方法)。
- 实践新接触的 C# 语法(public 方法)。
- 项目实用工具收集。
- 编码体验优化。
大概就这七个原因,其中 1 和 5 可以归为一类。2 和 3、4 、6、7可以归为一类。
如下:
- 知识学习&收集
- API 收集
- C# 语法实践
- 库本身的功能
- 规则实现
- 使用流程提供及优化
- 效率提升(编码体验、逻辑复用)
- 项目实用工具收集
OK,总结出了一份非常清晰的分类。大家还记得在第一篇中笔者的关于库的介绍?
贴出原文如下:
有一个自己的库,有什么好处呢?其实好处是非常多的。
从编程角度上:
- 可以提高自己的编码效率。
从学习角度上: - 可以积累下来自己所学过的知识。
在第一篇的时候很笔者介绍的很模糊,现在经过以上更具体的分类,大家应该更清楚了吧?
今天的内容就这些。
小结
- 要做的事情:
- 备份:导出文件,并取一个合理的名字。
- 遗留问题:
- 第八个示例与之前的示例代码重复,功能重复。
- 约定和规则:
- 每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能
- 每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法。
- 每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了。
- 示例分类:
- 知识学习&收集
- API 收集
- C# 语法实践
- 库本身的功能
- 规则实现
- 使用流程提供及优化
- 效率提升(编码体验、逻辑复用)
- 项目实用工具收集
- 知识学习&收集
文章就写到这里,我们下一篇开始进行整理。
转载请注明地址:凉鞋的笔记:liangxiegame.com
更多内容
QFramework 地址:https://github.com/liangxiegame/QFramework
QQ 交流群:623597263
Unity 进阶小班:
- 主要训练内容:
- 框架搭建训练(第一年)
- 跟着案例学 Shader(第一年)
- 副业的孵化(第二年、第三年)
- 权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro
- 主要训练内容:
关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。
Unity 游戏框架搭建 2019 (二十一、二十二) 第三章简介&整理前的准备的更多相关文章
- Unity 游戏框架搭建 2019 (八) 关于导出 UnityPackage 功能的小结
导出 UnityPackage 功能到这里要告一段落了,相信认真看的童鞋都有收获.笔者在写教程之前纠结了很久.到底是先给出一坨工具代码,然后再逐个讲解比较好,还是一篇一个知识点比较好.后来想通了.工具 ...
- Unity 游戏框架搭建 2019 (二十六) 第一轮整理完结
昨天呢我们把第八个示例整理完了.整理之后学习了类的第一作用:方法的集合,还有 Obselete 这个 API.并且在进行整理的时候贯彻了我们新的约定和规则:先确保功能有效,再去做变更和删除. 今天我们 ...
- Unity 游戏框架搭建 2019 (二十七、二十八)弃用的代码警告解决&弃用的代码删除
在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...
- Unity 游戏框架搭建 2019 (四十二、四十三) MonoBehaviour 简化 & 定时功能
MonoBehaviour 简化 在前两篇,我们完成了第九个示例.为了完善第九个示例,我们复习了类的继承,又学习了泛型和 params 关键字. 我们已经接触了类的继承了.接触继承之前,把类仅仅当做是 ...
- Unity 游戏框架搭建 2019 (九~十二) 第一章小结&第二章简介&第八个示例
第一章小结 为了强化教程的重点,会在合适的时候进行总结与快速复习. 第二章 简介 在第一章我们做了知识库的准备,从而让我们更高效地收集示例. 在第二章,我们就用准备好的导出工具试着收集几个示例,这些示 ...
- Unity 游戏框架搭建 2019 (二十三) 备份与版本号&危险的操作
先列出上一篇的总结: 要做的事情: 备份:导出文件,并取一个合理的名字. 遗留问题: 第八个示例与之前的示例代码重复,功能重复. 约定和规则: 每个示例在 QFramework 目录下创建一个文件夹, ...
- Unity 游戏框架搭建 2019 (十八~二十) 概率函数 & GameObject 显示、隐藏简化 & 第二章 小结与快速复习
在笔者刚做项目的时候,遇到了一个需求.第一个项目是一个跑酷游戏,而跑酷游戏是需要一条一条跑道拼接成的.每个跑道的长度是固定的,而怪物的出现位置也是在跑道上固定好的.那么怪物出现的概率决定一部分关卡的难 ...
- Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性
在上一篇我们整理到了第七个示例,我们今天再接着往下整理.我们来看第八个示例: #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; ...
- Unity 游戏框架搭建 2019 (二十七) 弃用的代码警告解决
在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...
随机推荐
- safari坑之 回弹
博客地址: https://www.seyana.life/post/20 今天在使用safari浏览博客的时候, 发现在拉至顶部并产生回弹之后,头部导航隐藏了, 除非在上拉的时候,刚好达到顶部而不超 ...
- 看逐浪CMS技术小哥做SVG动画(附使用Bodymovin和Lottie将Adobe After Effects(AE)程式转为 HTML5/Android/iOS原生的动画全过程-即AE转svg\canvas\html5动画)
名词解解释 adobe After Effects AE:adobe After Effects,adobe公司的专业视频制作软件. Bodymovin插件预览 Bodymovin:是一个AE的插 ...
- Simulink仿真入门到精通(二) Simulink模块
2.1 Simulink模块的组成要素 用户构建系统模型时无需直接面对成千上万行的代码,而是通过模块化图形界面以模块化的方式构建,能够使理解变得容易,让大脑减负.通过层次化模块分布将系统功能模块化,而 ...
- Python 【绘制图及turtle库的使用】
前言 最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,整理了一下,挑了一些觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~赶快去试一下吧) one ...
- go入门二
一.流程控制 1.选择结构 if-else: package main import ( "io/ioutil" "fmt" ) func main(){ co ...
- js 数组 方法
instanceof 检测一个对象是否是数组;(用来对付复杂数据类型;)// 简单数据类型 typeof ;A instanceof B // A是不是B造出来的;例: var arr = [1,2, ...
- 干货来啦。Flask框架看这一篇就够了,关注不迷路,Jeff带你看源码。开发技术时时更新
目录 一.初识Flask 1.1 什么是flask? 1.2 为什么要有flask? 二.Flask快速启动 三.Flask四剑客 三.flask的配置文件 可以配置的属性 四.flask路由 4.1 ...
- vscode 自动修复 setting.json 修改完,得重启浏览器 # 新版(>1.41.0)配置 vscode #解决了
vscode 自动修复 setting.json 修改完,得重启浏览器,不用 npm run dev 就能看到效果 "editor.codeActionsOnSave": { &q ...
- C++中 string 中的方法的使用详解
string 字符串在所有的语言中都非常重要,c++也不例外,接下来我们将介绍string中的常用方法 1. size() 和 length() 函数 : 他们返回字符串的真实长度,且不会因为空格而截 ...
- 数据库-第三章 关系数据库标准语言SQL-3.3 数据查询
数据查询 例: 一.单表查询 1.定义 是指仅涉及一个表的查询 2.选择表中的若干列 查询指定列 例: 查询全部列 例: 查询经过计算的值 例: 3.选择表中的若干元组 消除取值重复的行 例: 查询满 ...