准备的工具:luac.exe CSDNhttps://mp.csdn.net/mp_download/manage/download/UpDetailed
Unity版:
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
public static class Batch_LuaToLuac
{
[UnityEditor.MenuItem("Tools/LuaToLuac")]
static void ToLuac()
{
//准备进程信息
string luacExe = "luac53.exe"; //luac.exe工具文件名
string luacExe_Dir = @"D:\workspace\Test\T4\PureProject_Develop\Development2020\Tools\Lua"; //luac.exe工具路径
string luacExe_fullpath = Path.Combine(luacExe_Dir, luacExe); //luac.exe工具完整路径
var processStartInfo = new System.Diagnostics.ProcessStartInfo();
processStartInfo.FileName = luacExe_fullpath;
processStartInfo.UseShellExecute = true;
processStartInfo.ErrorDialog = true;
processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
void DoExe(string srcFile, string outFile)
{
//执行转换进程
try
{
string args = string.Format("-o {0} {1}", outFile, srcFile);
processStartInfo.Arguments = args;
var process = System.Diagnostics.Process.Start(processStartInfo);
process.WaitForExit();
}
catch (Exception ex)
{
Debug.LogError(ex.ToString());
}
}
//lua源文件路径
var luaFileDir = Application.dataPath + "/LuaSource";
//生成的luac文件路径
var outPutDir = Path.Combine(luaFileDir, "luac");
if (Directory.Exists(outPutDir)) Directory.Delete(outPutDir, true);
Directory.CreateDirectory(outPutDir);
var files = Directory.GetFiles(luaFileDir, "*.lua", SearchOption.TopDirectoryOnly);
foreach (var file in files)
{
if (file.Contains(".meta")) { continue; }
var outFile = Path.Combine(outPutDir, Path.GetFileNameWithoutExtension(file) + ".luac");
DoExe(file, outFile);
}
AssetDatabase.Refresh();
}
}