整理前的准备

到目前为止,我们积攒了很多示例了,并且每个示例也都贯彻了最的约定和规则。

在上一篇的小结也说了一个比较新的东西:编程体验优化。

在之前我们还积攒了一个问题:代码重复问题。

我们可是忍住整理的冲动忍了好久了。

所以现在也是时候准备着手整理了。

知识点和问题总结

遗留问题

我们写列出来之前记录的第一个问题:

  • 第八个示例与之前的示例代码重复,功能重复。

这个问题想想就很好解决,只要删除掉第八个示例之前的示例就好了。但是怎么删和删完是否会破坏原来的功能?这两问题要具体看了代码才会知道。现在先不看,先把这个问题暂时列出来。

备份

代码要在之后的一段时间内要进行大幅度地更改,可能会改出问题来,如果问题比较难以解决就麻烦了。所以我们要给做一个份备份,如果出了问题我们可以通过备份恢复。如何备份其实有很多种,比较常见的是放在 git 服务器,不过这部分我们还没有接触过,所以先备份成文件。就用我们的导出功能导出,把文件进行命名。叫什么名字呢?这个问题也先列出来:

  • 进行备份,给导出的文件取个名字。

约定和规则总结

首先我们到目前为止 QFramework 目录结构应该如下图所示:



笔者更希望除了除了了这 13 个示例之外,大家自己也收集了一些东西。

之所以目录的结构是这样,是因为我们在做每个示例的时候贯彻了我们的约定和规则。

那么我们的约定和规则现在是什么呢?

  1. 每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能
  2. 每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法。
  3. 每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了。

大概就这些,非常清晰明确。

示例诞生的原因类型

现在呢我们有 13 个示例,每个示例都有它诞生的原因的。但是这些诞生的原因又有点区别,我们逐个进行分析列出。

前七个示例是为了完成导出功能而进行的 Unity、C# API 的练习。因为在初期很多 API 我们是不知道的,大家应该在刚接触 Unity 的时候都经历过这一个阶段。

而完成导出功能的原因是为了优化我们的知识库导出体验,并且打造一个知识库的使用流程。有了导出功能可以让我们的知识库在多个项目之间切换或者在家和公司之间切换,而导出功能中的自动命名功能算是内置了我们的一部分命名规则。命名规则的存在呢是为了解决我们如果有多个文件不知道哪个是最新的问题。

所以前七个示例总结下来是解决了几个问题:

  1. 新的知识(API)收集,比如时间操作、文件打开、UnityEditor API 收集等。
  2. 内置了部分规则(比如文件命名)。
  3. 完成某个功能(导出功能),并完善。
  4. 导出功能的目的是为了让知识库的使用流程更平滑,是为了解决最初的问题。根据解决的问题去收集了 API,并逐步完善的导出功能。
  5. 逻辑复用,比如 MenuItem 复用。

前七个示例大概是这样。

接下来分析之后的几个示例:

8. 第八个示例诞生的原因,是为了解决我们的代码复用问题,使用 MenuItem 进行复用代码限制太多了,所以为此我们使用了 public 关键字,并且对前七个示例都进行了一次实践。在实践的过程中有逐步摸索出了一点方法设计的方法论。

9. 第九个示例是笔者分享的一个在项目中比较实用的分辨率检测小工具,这种小工具是解决实际的项目问题。

10. 第十个是示例节省了代码行数,因为每次为 transform.localPosition.x 赋值太麻烦了,要写三行代码,算是编码体验优化吧。

11. 第十一个示例是 Transform 重置功能,写了一个 Identity 方法,同样也是编码体验优化。

12. 第十二个示例是 一个概率函数,就是 Persent,是一种数学工具,在项目中也会用到,和第九个分辨率检测小工具一样,算是解决项目实际问题的小工具。

13. 第十三个示例呢是给 GameObject 的 Show 和 Hide 做了一步,原因是笔者刚转过来的时候不太适应 active 的这种命名,也算是编码体验优化。

大概是这些加上前七个总结再进行一次分类总结。

我们的知识库的每个示例诞生的原因分类:

  1. 知识、API 收集(为了完成导出功能)。
  2. 实现部分规则(命名规则)。
  3. 解决库本身使用及流程问题(导出功能)。
  4. 逻辑复用(MenuItem 和 public 方法)。
  5. 实践新接触的 C# 语法(public 方法)。
  6. 项目实用工具收集。
  7. 编码体验优化。

大概就这七个原因,其中 1 和 5 可以归为一类。2 和 3、4 、6、7可以归为一类。

如下:

  1. 知识学习&收集

    • API 收集
    • C# 语法实践
  2. 库本身的功能
    • 规则实现
    • 使用流程提供及优化
    • 效率提升(编码体验、逻辑复用)
    • 项目实用工具收集

OK,总结出了一份非常清晰的分类。大家还记得在第一篇中笔者的关于库的介绍?

贴出原文如下:

有一个自己的库,有什么好处呢?其实好处是非常多的。

从编程角度上:

  • 可以提高自己的编码效率。

    从学习角度上:
  • 可以积累下来自己所学过的知识。

在第一篇的时候很笔者介绍的很模糊,现在经过以上更具体的分类,大家应该更清楚了吧?

今天的内容就这些。

小结

  1. 要做的事情:

    • 备份:导出文件,并取一个合理的名字。
  2. 遗留问题:
    • 第八个示例与之前的示例代码重复,功能重复。
  3. 约定和规则:
    • 每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能
    • 每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法。
    • 每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了。
  4. 示例分类:
    1. 知识学习&收集

      • API 收集
      • C# 语法实践
    2. 库本身的功能
      • 规则实现
      • 使用流程提供及优化
      • 效率提升(编码体验、逻辑复用)
      • 项目实用工具收集

文章就写到这里,我们下一篇开始进行整理。

转载请注明地址:凉鞋的笔记:liangxiegame.com

更多内容

Unity 游戏框架搭建 2019 (二十一、二十二) 第三章简介&整理前的准备的更多相关文章

  1. Unity 游戏框架搭建 2019 (八) 关于导出 UnityPackage 功能的小结

    导出 UnityPackage 功能到这里要告一段落了,相信认真看的童鞋都有收获.笔者在写教程之前纠结了很久.到底是先给出一坨工具代码,然后再逐个讲解比较好,还是一篇一个知识点比较好.后来想通了.工具 ...

  2. Unity 游戏框架搭建 2019 (二十六) 第一轮整理完结

    昨天呢我们把第八个示例整理完了.整理之后学习了类的第一作用:方法的集合,还有 Obselete 这个 API.并且在进行整理的时候贯彻了我们新的约定和规则:先确保功能有效,再去做变更和删除. 今天我们 ...

  3. Unity 游戏框架搭建 2019 (二十七、二十八)弃用的代码警告解决&弃用的代码删除

    在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...

  4. Unity 游戏框架搭建 2019 (四十二、四十三) MonoBehaviour 简化 & 定时功能

    MonoBehaviour 简化 在前两篇,我们完成了第九个示例.为了完善第九个示例,我们复习了类的继承,又学习了泛型和 params 关键字. 我们已经接触了类的继承了.接触继承之前,把类仅仅当做是 ...

  5. Unity 游戏框架搭建 2019 (九~十二) 第一章小结&第二章简介&第八个示例

    第一章小结 为了强化教程的重点,会在合适的时候进行总结与快速复习. 第二章 简介 在第一章我们做了知识库的准备,从而让我们更高效地收集示例. 在第二章,我们就用准备好的导出工具试着收集几个示例,这些示 ...

  6. Unity 游戏框架搭建 2019 (二十三) 备份与版本号&危险的操作

    先列出上一篇的总结: 要做的事情: 备份:导出文件,并取一个合理的名字. 遗留问题: 第八个示例与之前的示例代码重复,功能重复. 约定和规则: 每个示例在 QFramework 目录下创建一个文件夹, ...

  7. Unity 游戏框架搭建 2019 (十八~二十) 概率函数 & GameObject 显示、隐藏简化 & 第二章 小结与快速复习

    在笔者刚做项目的时候,遇到了一个需求.第一个项目是一个跑酷游戏,而跑酷游戏是需要一条一条跑道拼接成的.每个跑道的长度是固定的,而怪物的出现位置也是在跑道上固定好的.那么怪物出现的概率决定一部分关卡的难 ...

  8. Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性

    在上一篇我们整理到了第七个示例,我们今天再接着往下整理.我们来看第八个示例: #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; ...

  9. Unity 游戏框架搭建 2019 (二十七) 弃用的代码警告解决

    在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...

随机推荐

  1. 【03】openlayers 地图事件

    绑定事件:map.on(type, listener) 取消绑定:map.un(type, listener) type:事件类型 listener:执行得函数体 事件类型: //事件类型 let t ...

  2. Iterm2 快捷操作

    窗口操作 新建窗口:Command + N 关闭所有窗口:Shift + Command + W 窗口之间切换 前一个窗口: Command + [ 后一个窗口:Command + ] 进入窗口1,2 ...

  3. Python模块二

    os模块是与操作系统交互的一个接口​ <em>#和文件夹相关 os.makedirs('dirname1/dirname2')    可生成多层递归目录 os.removedirs('di ...

  4. mycli初体验

    一.安装 pip install mycli 二.使用 mycli --help 三.特点 语法不全,高亮等

  5. 手动搭建webpack + vue项目之初体验

    在使用vue做开发时,大部分人只会使用官方提供的脚手架搭建项目,脚手架虽然很好用,但想要成为一名优秀的前端开发者,webpack这一道坎是绕不开的,所以我们要学会脱离脚手架,利用webpack手动搭建 ...

  6. failed to open directory

    解决方法: 解决方案的路径不要包含中文!

  7. 普通索引和唯一索引如何选择(谈谈change buffer)

    假设有一张市民表(本篇只需要用其中的name和id_card字段,有兴趣的可以翻看“索引”篇,里面有建表语句) 每个人都有一个唯一的身份证号,且业务代码已经保证不会重复. 由于业务需求,市民需要按身份 ...

  8. [Linux][C][gcc] Linux GCC 编译链接 报错ex: ./libxxx.so: undefined reference to `shm_open'

    本人原创文章,文章是在此代码github/note的基础上进行补充,转载请注明出处:https://github.com/dramalife/note. 以librt丶用户自定义动态库libxxx 和 ...

  9. Journal of Proteomics Research | 构建用于鉴定蓖麻毒素的串联质谱库

    文章题目:Constructing a Tandem Mass Spectral Library for Forensic Ricin Identification 构建用于鉴定蓖麻毒素的串联质谱库 ...

  10. mac redis搭建集群

    1.下载redis客户端 2.修改redis.conf文件 port 6379 //端口 daemonize yes cluster-enabled yes //打开集群 cluster-config ...