Unity 游戏框架搭建 2019 (六) MenuItem 复用

在上一篇中我们搞定了直接弹出文件夹功能,那么在这篇我们试着把它集成到我们导出步骤了。

那么我们要在第四个示例上直接加入代码嘛?

不是的,从笔者写教程的角度来讲,这样做会造成一个问题。教程和示例是一起发布的,如果在第四个示例上直接加入代码,那么,如果刚刚看完第四个篇教程的同学,去翻代码的时候,结果第四个示例根本看不懂,这样很容易造成困惑。

而这个框架搭建系列专栏作为笔者打算写一年的年度大专栏,这才刚到第六篇文章就要改之前的代码,是不允许这样做的:)。所以呢这部分只能做一点妥协。

要么在第六个示例中把第四个示例的核心代码复制过来,要么在第六个示例中想想有没有办法直接调用第四个示例的代码。作为一个优秀的开发者,肯定不要用前者了。

我们先来看看第四个示例的代码

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
	}
}

很遗憾地看到,这个 MenuClicked 被声明为了 private 类型。所以无法直接调用了。

那么有别的办法嘛?

答案是有的。

MenuItem 是可以被调用的。笔者是怎么知道的呢,就是用到的一些插件还有项目都会去试着去看看,看懂一点,有收获就写个例子记录到自己的知识库里。

关键 API 如下:

EditorApplication.ExecuteMenuItem("QFramework/4.导出 UnityPackage");

只要执行这行代码,就可以执行示例四的逻辑了,也就是一键导出 unitypackage 的逻辑。

我们的今天的示例代码如下:

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
	}
}

代码很简单,主要是第二行,因为我们的 unitypackage 是创建到 Assets 的上一级目录下,所以我们要打开的目录要拼接一个 “../“ ,这个是上一级的意思,使用 Path.Combine 这个 API 可以帮我们自动转换目录。

执行这个示例菜单,执行之后,就会自动导出我们的 unitypackage,并打开了 unitypackage 所在的文件夹。

执行之后结果如图:
006tNc79gy1fzdcwalgpsj30u20k6k0x.jpg

是不是很方便?
到此,笔者的导出 UnityPackage 也就是我们的知识库,名字为: QFramework_20181103_05。

那么我们的导出步骤可以更新了。

原来是:

  1. 点击菜单栏 QFramework/4.导出 UnityPackage。

现在变成了:

  1. 点击菜单栏 QFramework/6.MenuItem 复用。

这个名字容易造成误导,不过没关系,这只是暂时的方案。我们之后还会改进导出逻辑的。

小结

到此,我们又节省了自己一点时间,假如每次打开文件夹需要 5 秒钟时间。那么 1000 个知识点就会节省 130 块钱。加上第四篇的 390,再加上第三篇的 130 我们总共赚了 650 块。

虽然说得有点夸张,但是从小老师就告诉了我们一个简单的道理:“时间就是金钱”。

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

更多内容

posted @ 2020-03-24 10:14  凉鞋的笔记  阅读(...)  评论(...编辑  收藏