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 (二十七) 弃用的代码警告解决
在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...
随机推荐
- 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询
Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...
- SpringBoot1.5.10.RELEASE整合druid时,在druid monitor界面出现(*) property for user to setup
接上篇随笔,配置druid之后出现的错误,解决方法如下: @Bean(destroyMethod = "close",initMethod = "init") ...
- vue项目打包后打开空白解决办法
1.记得改一下config下面的index.js中bulid模块导出的路径.因为index.html里边的内容都是通过script标签引入的,而你的路径不对,打开肯定是空白的.先看一下默认的路径. a ...
- WSGI-mini-web框架服务器
前期准备: 安装python环境安装pycharm安装MySQL数据库安装pymsql创建一个学生表,存入数据我们只是实现一个非常简单的web服务,前端页面不会专门做页面文件,会在代码中以具体命令的形 ...
- 【转】JS内置对象方法
String内置对象的方法 1. concat() concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串 var str = "Hello"; var out ...
- HTML5 history-hash 随机选择彩票
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 【Python】2.19学习笔记 成员运算符,身份运算符,运算符优先级
成员运算符 暂时不会用,等学链表时再补充 \(in\) 与 \(not in\) \(in\):如果在指定序列中找到指定值,则返回\(true\) \(not in\):如果在指定序列中找到指定值,则 ...
- 网络安全从入门到精通 (第二章-1) Web安全前端基础
本文内容: 前端是什么? 前端代码 HTML CSS JS !!!醋成酒的小墨,促成就的小墨,小墨促成就,!!! 1,前端是什么? 网站一般用两部分组成,前端负责展示,后端负责处理请求. 2,前端代码 ...
- 微信小程序开发中的http请求总结
在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downlo ...
- thinkphp5.0.*命令执行批量脚本
import requests import Queue import threading import time user_agent = "Mozilla/5.0 (Windows NT ...