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 (二十七) 弃用的代码警告解决
在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...
随机推荐
- 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)
这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...
- 自定义FrameWork
本项目是基于iOS-Universal-Framework-master框架制作的,故编译之前需要安装iOS-Universal-Framework-master框架, 步骤如下:1.跳转到iOS-U ...
- 基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境
基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境 前言一.环境准备环境介绍软件下载VMware下安装UbuntuUbuntu下Anaconda的安 ...
- 备份Oracl数据库.bat
=========================== @echo off echo ================================================ echo Win ...
- 爬虫使用中间代理人 fiddl...,charles,mitmproxy 设置
一般的设置在网上就能找到(端口,ip啥的) 但是难点是关于安卓手机证书 在网上找到的几种方法,一种是在app源码中添加设置让手机app同意你下载安装的证书,另一种则是root_adb 安装证书 但是太 ...
- python opencv Sobel、Laplace、canny算子的边缘提取 以及参数解析
前提:各种算子不完全区分好坏,但根据我实际操作分析得到,有的算子之间效果大相径庭,但有的也很相似,也就是各有各的用法,这里按 Sobel.Laplace.canny三种算子作比较,看其结果: 一. ...
- Core + Vue 后台管理基础框架7——APM
1.前言 APM,又称应用性能统计,主要用来跟踪请求调用链,每个环节调用耗时,为我们诊断系统性能.定位系统问题提供了极大便利.本系统采用的是Elastic Stack体系中的APM,主要是之前部门搞P ...
- 1.Lambda表达式
1.Lambda表达式 语法糖 也叫作糖衣语法,增强了代码的可读性 避免了出错的机会 但是,这种语法对于语言的功能并没有增强 和Lambda一样的糖衣语法还有:(1)泛型 <>(2)自动装 ...
- FormData/Go分片/分块文件上传
FormData 接口提供了一种表示表单数据的键值对的构造方式,经过它的数据可以使用 XMLHttpRequest.send() 方法送出,本接口和此方法都相当简单直接.如果送出时的编码类型被设为 & ...
- xargs命令_Linux xargs命令:一个给其他命令传递参数的过滤器
本文要为大家介绍的命令是 xargs,我们把它称为护花使者,因为它总是乐于协助其他的命令来完成一些事情.下面一起来看看它是如何护花的. xargs 是 execute arguments 的缩写,它的 ...