Unity编辑器扩展

知识点

最近在看一些教程,为了更好的复习,就来做一些知识点总结吧,方便后面忘记了的时候查阅。

第一阶段看完了,是一个小功能,下面会先介绍分知识点,然后将知识点总结成一个完整的样例。

获取当前时间

1
DateTime.Now.ToString("yyyyMMdd_HH");

双引号里面的格式有很多种,这里是使用了年月日小时的形式,大写的HH表示24小时哦。

复制文本到剪贴板

1
GUIUtility.systemCopyBuffer = "复制的文本";

导出UnityPackage

1
2
3
string assetPathName = "Assets/QFramework";
string fileName = "QFramework_" + DateTime.Now.ToString("yyyyMMdd_HH") + ".unitypackage";
AssetDatabase.ExportPackage(assetPathName, fileName, ExportPackageOptions.Recurse);

assetPathName:将要到处到Package里面的目录。

fileName:目标目录,也就是你的package要存在哪个目录。

打开文件夹

1
Application.OpenURL("file:///" + Application.dataPath+"/../");

这里面打开的文件夹就是Assets的同级目录,也就是Assets的父目录。

调用MenuItem

1
EditorApplication.ExecuteMenuItem("name");

这里双引号部分就是MenuItem的路径了。

自定义快捷键

1
2
3
4
5
[MenuItem("自定义快捷键 %e")]
private static void MenuClicked()
{
//code
}

常用的快捷键解释。

  • %-CTRL 在Windows / CMD在OSX
  • # -Shift
  • & -Alt
  • LEFT/RIGHT/UP/DOWN-光标键
  • F1…F12
  • HOME,END,PGUP,PDDN

样例

我们用上面的知识点实现一个小例子,方便我们掌握。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using UnityEngine;
#if UNITY_EDITOR
using System;
using UnityEditor;
#endif
namespace QFramework
{
public class OneTImeAll : MonoBehaviour
{
#if UNITY_EDITOR
private static string _mFileName = "";

[MenuItem("QFrameWork/Output Unitypackage & Copy file name %q")]
private static void MenuClicked()
{
EditorApplication.ExecuteMenuItem("QFrameWork/Output Untiypackage");
GUIUtility.systemCopyBuffer = _mFileName;
}
[MenuItem("QFrameWork/Output Untiypackage")]
private static void OutputUntiyPackage()
{
string timeStr = DateTime.Now.ToString("yyyyMMdd_HH");

string assetPathName = "Assets/QFramework";
_mFileName = "QFramework_" + timeStr+".unitypackage";
AssetDatabase.ExportPackage(assetPathName,_mFileName,ExportPackageOptions.Recurse);
Application.OpenURL("file:///"+Application.dataPath+"/../");
}
#endif
}
}