UnityProject面板中右键创建新的Lua脚本以及修改文件默认打开方式的编辑器

  新大厅中要介入热更新,那自然少不了Lua。这两天在学习腾讯的xLua还有之前一直有在积累的shader知识。由于Unity原生没有直接创建lua脚本的功能,而且VS对Lua和Shader支持的都不是特别好,而且比较臃肿,所以我制作了创建lua脚本和改变其默认打开方式的编辑器。

1.右键创建Lua脚本

 1     [MenuItem("Assets/Create/Lua Script #&c", priority = 81)]
 2     static void CreateLuaScriptMethod()
 3     {
 4         Object[] obj = Selection.objects;
 5         
 6         string assetPath = AssetDatabase.GetAssetPath(obj[0]);
 7         string path = "";
 8         if (!Path.HasExtension(assetPath))
 9         {
10             path = Path.GetFullPath(assetPath);
11         }
12         else
13         {
14             string dirPath = Path.GetDirectoryName(assetPath);
15             path = Path.GetFullPath(dirPath);
16         }
17         path += "/NewLuaScript.lua.txt";
18         int index = 1;
19         while (File.Exists(path))
20         {
21             string dir = Path.GetDirectoryName(path);
22             path = dir + "/NewLuaScript"+index+".lua.txt";
23             index++;
24         }
25         Debug.Log(path);
26         StreamWriter sw = new StreamWriter(path, false);
27         sw.Close();
28         AssetDatabase.Refresh();
29     }

  priority 是设置该条目的优先级,为了让它在创建C#脚本下方

  在文件上右键时在它的目录下生成新的lua.txt文件(txt是为了能被Unity识别为TextAsset,xLua的脚本就是这种格式)。当命名重复会自动在后面增加index。

2.将Shader文件的打开方式更换为系统默认的打开方式

[OnOpenAsset]
    public static bool OpenShaderAsset(int instanceID, int line)
    {
        if (EditorUtility.InstanceIDToObject(instanceID) is Shader)
        {
            string assetPath = AssetDatabase.GetAssetPath(instanceID);
            System.Diagnostics.Process.Start(Application.dataPath + "/../" + assetPath);
            return true;
        }
        return false;
    }

  系统默认打开方式人人应该都会了,想让.txt文件也用默认方式打开再创建一个函数,把Shader改成TextAsset即可。这样我的lua脚本和Shader脚本都会有VSCode打开

posted @ 2017-08-30 16:33  StraussDu  阅读(135)  评论(0编辑  收藏