|
public class CreateLuaScript : EndNameEditAction
{
/// <summary>
/// 编辑器模式下,新建文件重命名后调用
/// </summary>
/// <param name=&#34;instanceId&#34;>新建文件的ID</param>
/// <param name=&#34;pathName&#34;></param>
/// <param name=&#34;resourceFile&#34;></param>
public override void Action(int instanceId, string pathName, string resourceFile)
{
UnityEngine.Object obj = CreateScriptFormTemplate(pathName, resourceFile);
// 高亮选中该资源
ProjectWindowUtil.ShowCreatedAsset(obj);
}
/// <summary>
///
/// </summary>
/// <param name=&#34;fullPathOfCreatingFile&#34;>新创建的文件所在路径(含新文件名及扩展名)</param>
/// <param name=&#34;templateFile&#34;>模板文件所在路径(含文件名及扩展名)</param>
/// <returns></returns>
private UnityEngine.Object CreateScriptFormTemplate(string fullPathOfCreatingFile, string templateFile)
{
//读取模板文件内容
StreamReader streamReader = new StreamReader(templateFile);
string text = streamReader.ReadToEnd();
streamReader.Close();
//只获取文件名不包括扩展名
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fullPathOfCreatingFile);
// 替换lua脚本中的表名
text = text.Replace(&#34;#LuaClass#&#34;, fileNameWithoutExtension);
//将替换好的内容写入新文件
StreamWriter streamWriter = new StreamWriter(fullPathOfCreatingFile);
streamWriter.Write(text);
streamWriter.Close();
//导入创建的新文件
AssetDatabase.ImportAsset(fullPathOfCreatingFile);
//返回指定路径下的Object对象
return AssetDatabase.LoadAssetAtPath(fullPathOfCreatingFile, typeof(UnityEngine.Object));
}
}
public class CustomAssetEditor
{
static string systemFileName = &#34;/NewLuaScript.lua&#34;;
static string tempFileName = &#34;Assets/Editor/felixwee/templates/lua_template.lua&#34;;
//第二个参数为true时,Lua Scipr不显示,第三个参数为优先级,表示上下排列的顺序,小的在上
[MenuItem(&#34;Assets/Create/Lua Script&#34;,false,1)]
public static void CreateLuaScript()
{
//获取选中的,且符合条件的所有对象
UnityEngine.Object[] arr = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.TopLevel);
//获取第一个文件的文件夹路径
string folder = AssetDatabase.GetAssetPath(arr[0]);
//选中文件夹,并进行重命名
//id,回调处理,新建文件url,图标,源始文件url
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<CreateLuaScript>(), folder + systemFileName, null, tempFileName);
}
}
Unity编辑器扩展之创建lua模板文件 | 易学教程 (e-learn.cn) |
|