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

这个示例是是原来示例一和示例二的结合,同样在第八个示例中提取成方法了,果断删。

第四个示例 using System; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class ExportUnityPackage : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/4.导出 UnityPackage")] private static void MenuClicked() { var assetPathName = "Assets/QFramework"; var fileName = "QFramework_" + DateTime.Now.ToString("yyyyMMdd_hh") + ".unitypackage"; AssetDatabase.ExportPackage(assetPathName, fileName, ExportPackageOptions.Recurse); } #endif } }

同理,果断删。

第五个示例 using System; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class OpenInFolder { #if UNITY_EDITOR [MenuItem("QFramework/5.打开所在文件夹")] private static void MenuClicked() { Application.OpenURL("file:///" + Application.dataPath); } #endif } }

同理,果断删。

第六个示例 using System.IO; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class ReuseMenuItem : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/6.MenuItem 复用")] private static void MenuClicked() { EditorApplication.ExecuteMenuItem("QFramework/4.导出 UnityPackage"); Application.OpenURL("file:///" + Path.Combine(Application.dataPath, "../")); } #endif } }

同理果断删

第七个示例 #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class CustomShortCut : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/7.自定义快捷键 %e")] private static void MenuClicked() { EditorApplication.ExecuteMenuItem("QFramework/6.MenuItem 复用"); } #endif } }

第七个示例是快捷键功能,不过我们没有在第八个示例中提取成方法,因为快捷键不可以复用。 而这个是我们目前导出功能的核心代码,所以比较重要,这个就不能删除了。

通过观察可知,MenuClicked 方法中的对 MenuItem "QFramework/6.MenuItem 复用" 的复用,已经失效了,因为第六个示例被我们删掉了。

不过没关系,我们在第八个示例中有提取成方法。而使用方法完成导出功能的代码如下:

[MenuItem("QFramework/8.总结之前的方法/4.导出 UnityPackage")] private static void MenuClicked4() { ExportPackage("Assets/QFramework",GenerateUnityPackageName() + ".unitypackage"); } [MenuItem("QFramework/8.总结之前的方法/5.打开所在文件夹")] private static void MenuClicked5() { OpenInFolder(Application.dataPath); } [MenuItem("QFramework/8.总结之前的方法/6.MenuItem 复用")] private static void MenuClicked6() { CallMenuItem("QFramework/8.总结之前的方法/4.导出 UnityPackage"); OpenInFolder(Path.Combine(Application.dataPath, "../")); } [MenuItem("QFramework/8.总结之前的方法/7.自定义快捷键")] private static void MenuClicked7() { Debug.Log("%e 意思是快捷键 cmd/ctrl + e"); }

不过在写第八个示例的时候还是在用 MenuItem 进行方法的调用,虽然那时候已经学习了调用 public 方法,但是由于 public 方法的运用没有那么纯熟,想不到是很正常的。但是现在不一样了,我们用 public 方法进行非常多的方法设计练习了,所以直接着手整理就好了。

整理后的第七个示例代码如下:

using System.IO; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class CustomShortCut : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/7.自定义快捷键 %e")] private static void MenuClicked() { var generatePackageName = PreviousFunctions.GenerateUnityPackageName(); PreviousFunctions.ExportPackage("Assets/QFramework",generatePackageName + ".unitypackage"); PreviousFunctions.OpenInFolder(Path.Combine(Application.dataPath, "../")); } #endif } }

这些方法都是自己实现的,调用起来比较亲切了吧?

等待编译之后,再按下快捷键 ctrl/cmd + e,就自动导出成功了,感受到满满的成就感。

不过命名方式还是 QFramework_日期_时,不过没关系,这不算真正的导出,只是测试而已,我们还没有整理结束。整理这个阶段虽然在文章中要写很久,但是实际过程中可能几分钟就整理完了。但是整理这个过程写文章很久的原因是,因为在整理的候笔者的内心戏份非常多,也就是思考经过会非常多。而笔者呢都要把它们展示出来,这样大家理解了这些,就不难自己再造个 QFramework 了甚至更好,而本系列专栏的亮点就是这个。

到此呢,我们成功了。

不过以上代码呢,还存在一些问题:

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

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