在Unity Project面板右键菜单的拓展

来源:互联网 发布:linux shutdown命令 编辑:程序博客网 时间:2024/06/03 17:37

在Unity Project面板右键菜单的拓展

本次主要的内容如下

  • MenuItem的应用
  • Selection.assetGUIDs的使用
  • 完整代码

using System;namespace UnityEditor{    [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]    public sealed class MenuItem : Attribute    {        public string menuItem;        public int priority;        public bool validate;        public MenuItem(string itemName);        public MenuItem(string itemName, bool isValidateFunction);        public MenuItem(string itemName, bool isValidateFunction, int priority);    }}

可知MenuItem最多有三个参数:
- 参数一表示MenuItem所处的路径
- 参数二表示是否有验证方法
- 参数三表示MenuItem在整个Menu中所处的优先级
PS: MenuItem的具体使用网上有很多,在这里就不一一说明

Selection.assetGUIDs的使用

Returns the guids of the selected assets. —— [ Unity Manual ]

如介绍所指,这个API会返回当前编辑器里所选的资源的GUID数组,为什么用这个API而不用Selection.objects,因为Selection.objects里面并不包含文件夹的信息,如果是要对所选文件夹进行操作的话,需要调用Selection.assetGUIDs。

完整代码

using UnityEngine;using UnityEditor;public class Tools {    [MenuItem("Assets/Svn Commit")]    static void SvnCommit()    {        string path = "Assets";        string[] strs = Selection.assetGUIDs;        if (strs != null)        {            path = "\"";            for (int i = 0; i < strs.Length; i++)            {                if (i != 0)                    path += "*";                path += AssetDatabase.GUIDToAssetPath(strs[i]);                if (AssetDatabase.GUIDToAssetPath(strs[i]) != "Assets")                    path += "*" + AssetDatabase.GUIDToAssetPath(strs[i]) + ".meta";            }            path += "\"";        }        System.Diagnostics.Process process = new System.Diagnostics.Process();        process.StartInfo.FileName = "TortoiseProc.exe";        process.StartInfo.Arguments = "/command:commit /path:" + path;        process.Start();    }    [MenuItem("Assets/Svn Update")]    static void SvnUpdate()    {        string path = "Assets";        string[] strs = Selection.assetGUIDs;        if (strs != null)        {            path = "\"";            for (int i = 0; i < strs.Length; i++)            {                if (i != 0)                    path += "*";                path += AssetDatabase.GUIDToAssetPath(strs[i]);                if (AssetDatabase.GUIDToAssetPath(strs[i]) != "Assets")                    path += "*" + AssetDatabase.GUIDToAssetPath(strs[i]) + ".meta";            }            path += "\"";        }        System.Diagnostics.Process process = new System.Diagnostics.Process();        process.StartInfo.FileName = "TortoiseProc.exe";        process.StartInfo.Arguments = "/command:update /path:" + path;        process.Start();    }}
原创粉丝点击