1 . 在Project界面创建文件夹 Editor/Lua/Template/lua.lua 注:最后的文件lua.lua可以先创建一个C#然后改后缀,lua文件里 可以随便写一些默认的值,我写的为“ print("#NAME#") ”。
2 . 创建C#脚本
using UnityEngine;
using UnityEditor;
using System;
using System.IO;
using System.Text;
using UnityEditor.ProjectWindowCallback;
using System.Text.RegularExpressions;
public class CreateLua {
[MenuItem("Assets/Create/Lua Sctipt",false,80)]
public static void CreatNewLua() {
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<MyDoCreateScriptAsset>(),
GetSelectedPathOrFallback() + "/New Lua.lua", null, "Assets/Editor/Lua/Template/lua.lua");
}
public static string GetSelectedPathOrFallback() {
string path = "Assets";
foreach (UnityEngine.Object obj in Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.Assets)) {
path = AssetDatabase.GetAssetPath(obj);
if (!string.IsNullOrEmpty(path)&&File.Exists(path)) {
path = Path.GetDirectoryName(path);
break;
}
}
return path;
}
}
class MyDoCreateScriptAsset:EndNameEditAction{
public override void Action(int instanceId, string pathName, string resourceFile) {
UnityEngine.Object o = CreateScriptAssetFromTemplate(pathName, resourceFile);
ProjectWindowUtil.ShowCreatedAsset(o);
}
internal static UnityEngine.Object CreateScriptAssetFromTemplate(string pathName, string resourceFile) {
string fullPath = Path.GetFullPath(pathName);
StreamReader streamReader = new StreamReader(resourceFile);
string text = streamReader.ReadToEnd();
streamReader.Close();
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName);
text = Regex.Replace(text, "#NAME#", fileNameWithoutExtension);
bool encoderShouldEmitUTF8Identifier = true;
bool throwOnInvalidBytes = false;
UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes);
bool append = false;
StreamWriter streamWriter = new StreamWriter(fullPath, append, encoding);
streamWriter.Write(text);
streamWriter.Close();
AssetDatabase.ImportAsset(pathName);
return AssetDatabase.LoadAssetAtPath(pathName,typeof(UnityEngine.Object));
}
}
3 . 保存,就可以了。注:我把这个C#脚本放在了文件夹Lua层级下,比较直观的知道这是创建lua用的。
转载自雨松:http://www.xuanyusong.com/archives/3732