代码语言:javascript复制
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JavaToCs
{
class Program
{
static void Main(string[] args)
{
DoProtoToCs();
}
static void DoProtoToCs()
{
string myPath = AppDomain.CurrentDomain.BaseDirectory;
string fullPath = myPath "JavaDefine"; //路径
string toPath = myPath "CsDefine";
//获取指定路径下面的所有资源文件
if (Directory.Exists(fullPath))
{
DirectoryInfo direction = new DirectoryInfo(fullPath);
FileInfo[] files = direction.GetFiles("*", SearchOption.AllDirectories);
for (int i = 0; i < files.Length; i )
{
if (files[i].Name.EndsWith(".java"))
{
string fileOnlyName = files[i].Name.Replace(".java", "");
StringBuilder tempBuilder = new StringBuilder();
tempBuilder.Append("using System.Collections.Generic;");
tempBuilder.AppendLine();
tempBuilder.Append("namespace XH {");
tempBuilder.AppendLine();
var strs = File.ReadAllLines(files[i].FullName);
int protoIdx = 1;
for (int lineIdx = 0; lineIdx < strs.Length; lineIdx )
{
if (strs[lineIdx].Contains("import") || strs[lineIdx].Contains("@") || strs[lineIdx].Contains("package") || strs[lineIdx].Contains("MessageMeta"))
{
continue;
}
if (strs[lineIdx].Contains("class"))
{
string[] bufStr = strs[lineIdx].Split(' ');
string sClass = bufStr[0] " " bufStr[1] " " bufStr[2] "{";
tempBuilder.Append(sClass);
tempBuilder.AppendLine();
continue;
}
strs[lineIdx] = strs[lineIdx].Replace("Long", "long?");
strs[lineIdx] = strs[lineIdx].Replace("Double", "double?");
strs[lineIdx] = strs[lineIdx].Replace("String", "string");
strs[lineIdx] = strs[lineIdx].Replace("Integer", "int?");
strs[lineIdx] = strs[lineIdx].Replace("Short", "short?");
strs[lineIdx] = strs[lineIdx].Replace("Map", "Dictionary");
strs[lineIdx] = strs[lineIdx].Replace("private", "public");
tempBuilder.Append(strs[lineIdx]);
tempBuilder.AppendLine();
}
tempBuilder.Append("}");
string tempFilePath = string.Format("{0}/{1}.cs", toPath, fileOnlyName);
if (File.Exists(tempFilePath))
{
File.Delete(tempFilePath);
}
File.WriteAllText(tempFilePath, tempBuilder.ToString());
}
}
}
Console.WriteLine("JavaToCs OK");
}
}
}
unity3d菜单中调用
代码语言:javascript复制[MenuItem("DoJavaToCs/RunExe")]
static void DoJavaToCsByExe()
{
Process pro = PublicFunc.StartProcess("Assets/XinHuaDangJian/DataDefine/JavaToCs.exe", "");
pro.Start();
StreamReader reader = pro.StandardOutput;//截取输出流
string outLine = reader.ReadLine();//每次读取一行
while (!reader.EndOfStream)
{
UnityEngine.Debug.Log(outLine);
outLine = reader.ReadLine();
}
UnityEngine.Debug.Log(outLine);
pro.WaitForExit();
pro.Close();
reader.Close();//关闭流
//AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
}