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

备份:导出文件,并取一个合理的名字。

遗留问题:

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

约定和规则:

每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能

每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法。

每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了。

示例分类:

知识学习&收集

API 收集

C# 语法实践

库本身的功能

规则实现

使用流程提供及优化

效率提升(编码体验、逻辑复用)

项目实用工具收集

我们先解决第一个问题,备份问题。

文件命名

导出文件很容易,但是文件的名字就比较有讲究了。现在我们的库呢第一次进行比较大的整理,未来说不定有很多次这样的整理。所以文件命名应该能够体现库的某一个阶段。

我们目前的命名规是 QFramework_日期_时,这种命名能够体现库的某个时间点,从而我们能够在多个文件之间找到最后一次更新的库。但是这样还不够。如果现在想找到第一篇文章的库,那要去找到第一篇文章写的时间。找到这个库的难度会随着时间越来越困难。不过这种命名已经完成了它的使命,最起码从第一个示例到现在没出现太大的问题。

但是有新的要求了。因为示例的代码会被删除,这算是代码的比较大的变更了,而且看专栏的童鞋所在的阶段也不同,有的童鞋刚刚看第一篇而有的童鞋已经完结了。所以要考虑库的各个阶段。

如何表示库的某个阶段呢?

有一种比较好的方式,就是按照文章的标题命名,比如这篇文章之前的库名字为 QFramework_19_开始整理,或者按照最新的示例名字,比如 QFramwork_13 GameObject 显示、隐藏简化。但是这样的名字过了很久回过头来找文件还是会要凌乱好一会,所以并不合适。

比较合适的是用版本号,我们生活中使用的软件都有版本号,比如 Unity 5.6.5 或者 2017.2 等等。对于开发者来说版本号已经是比较熟悉的东西了。

使用版本号命名的文件格式为: QFramework_vX.Y.Z X 是主版本号,用于不向前兼容的更新。 Y 是中间版本,用于可向前兼容的功能性更新。 Z 是小版本号,用于功能完善和 bug 修复的更新。

一般都是从 v0.1.1 这个版本开始发布的,但是这个版本呢叫做 mvp 版本,也就是最小可验证版本。我们的库还没有到这个阶段,而且版本号这个东西刚开始用,是用于方便自己记忆的,也是为了做一个备份而已,还不用发布给别人用。所以我们的备份版本为 v0.0.0 。

还有一点要注意的是,v0.x.y 这个阶段的版本可以不考虑向前兼容。但是如果已经 v0.1.1 了,就要发布出去了,也有用户在使用了,那就要尽可能要做到向前兼容。

向前兼容的意思是,用户升级版本不必更改 API 的使用。

开始备份

在上一小节得到了结论。

现在,我们要开始着手导出。使用导出工具导出文件,并手动把文件名字命名为 QFramework_v0.0.0。

这样备份就算完成了。

可以把它放到网盘或者硬盘里。这样就可以安心整理代码了。

小结

版本号算是约定和规则的内容。

危险的操作

今天开始,进行逐个示例的整理。

第一个示例

先看第一个。

#if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; using System; namespace QFramework { public static class LogFileName { #if UNITY_EDITOR [MenuItem("QFramework/1.生成 unitypackage 名字")] #endif private static void GenerateUnityPackageName() { Debug.Log("QFramework_" + DateTime.Now.ToString("yyyyMMdd_hh")); } } }

因为在第八个示例里给提取成方法了,所以这个示例可以直接删除了。

删除之后的文件结构如下图所示。

006tNc79gy1fzfr4kvi6sj30mm0c0q4w.jpg

第二个示例

代码如下

#if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public static class CopyText2Clipboard { #if UNITY_EDITOR [MenuItem("QFramework/2.复制文本到剪切板")] #endif private static void CopyText() { GUIUtility.systemCopyBuffer = "要复制的关键字"; } } }

这个也在第八个示例中提取成方法了,所以这部分也可以直接删了, 删除之后的文件结构如下图所示:

006tNc79gy1fzfr4oojhfj30ma0b475x.jpg

第三个示例

代码如下:

using System; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class GenerateUnityPackageName2ClipBoard { #if UNITY_EDITOR [MenuItem("QFramework/3.生成文件名到剪切板")] #endif private static void MenuClicked() { GUIUtility.systemCopyBuffer = "QFramework_" + DateTime.Now.ToString("yyyyMMdd_hh"); } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpszfp.html