前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >unity3d:java定义转c#定义

unity3d:java定义转c#定义

作者头像
立羽
发布2023-08-24 15:00:14
发布2023-08-24 15:00:14
20000
代码可运行
举报
文章被收录于专栏:Unity3d程序开发Unity3d程序开发
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
复制
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
代码运行次数:0
复制
[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);

    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档