在开发中如果只是想快速查看某个(如.lua)文件的话,可以活用右键功能,这个在打开多个工程并调试的情况下略显高效。

如图:

写了一个工具类,并添加了两个方法:可选用notepad++或记事本快速打开文件。

代码如下:

using UnityEngine;using System.Collections;using UnityEditor;using thisObject = UnityEngine.Object;using System.Threading;using System;public class EasyTool{    const int OpenMax = 10; //一次打开文件的最大数量    const string NotePadJJ_APP_NAME = "notepad++.exe";    const string NotePad_APP_NAME = "notepad.exe";    ///     /// 用notepad++打开文件    ///     [MenuItem("Assets/EasyTool/Open_NotePad++")]    static public void OpenForNotePadJJ()    {        int count = 0;        foreach (var go in GetSelectObject())        {            if (go != null)            {                string dir_path = GetPath(go);                InvokeCmd(NotePadJJ_APP_NAME, dir_path);            }            count++;            if (count > OpenMax)            {                break;            }        }    }    //     /// 用记事本打开文件    ///     [MenuItem("Assets/EasyTool/Open_NotePad")]    static public void OpenForNotePad()    {        int count = 0;        foreach (var go in GetSelectObject())        {            if (go != null)            {                string dir_path = GetPath(go);                InvokeCmd(NotePad_APP_NAME, dir_path);                count++;                if (count > OpenMax)                {                    break;                }            }        }    }    ///     /// 调用CMD 命令    ///     public static void InvokeCmd(string cmd, string dir_path)    {        UnityEngine.Debug.Log(cmd);        AssetDatabase.Refresh();        new Thread(new ThreadStart(() =>        {            try            {                System.Diagnostics.Process p = new System.Diagnostics.Process();                p.StartInfo.FileName = cmd;                p.StartInfo.Arguments = dir_path;                p.Start();                p.WaitForExit();                p.Close();            }            catch (Exception e)            {                Debug.Log(e.Message);            }        })).Start();    }    ///     /// 获取选择的文件    ///     /// 
    static public thisObject[] GetSelectObject()    {        if (Selection.objects.Length == 0)        {            return new thisObject[0];        }        return Selection.objects;    }    ///     /// 获取文件路径    ///     /// 
    /// 
    static public string GetPath(thisObject go)    {        string str = Application.dataPath.Replace("Assets", "");        string path = AssetDatabase.GetAssetPath(go);        string dir_path = System.IO.Path.GetFullPath(str + path);        return dir_path;    }}