proto转lua表

本文详细介绍了如何将Protocol Buffers(ProtoBuf)数据格式转换为Lua中的表格结构,包括解析过程、示例代码以及在游戏开发中使用 ProtoBuf 和 Lua 进行数据交互的实践建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EErrorCode.proto

EErrorCode.lua

using System;
using UnityEditor;
using UnityEngine;
using System;
using System.IO;
using System.Linq;
using System.Text;
public class TurnProtoToLua
{
 [MenuItem("proto转Lua表")]
    public static void ChangeProtoToLua(){
  string protoPath =  "协议路径(协议名字.proto)" ;
  string Info = "";
        if (File.Exists(protoPath)){//是否存在此文件
   try {
                StreamReader sr = File.OpenText(protoPath);//打开文件
    string luaInfo="";
    while( (luaInfo= sr.ReadLine())!=null){ //此行是否为空。为空换行显示
     if (luaInfo.Contains("表名")){ Info += "表名 = {}";}//表名
                    else if (luaInfo.Contains("LL_")){
                        luaInfo = luaInfo.Trim();//Trim函数是去除读到的字符串中开头结尾的空格
                        Info += "表名[";
      int index1=luaInfo.IndexOf("=");
      luaInfo=luaInfo.Remove(0,index1+1);
      luaInfo=luaInfo.Trim();
      int index2=luaInfo.IndexOf(";");
                        Info += luaInfo.Substring(0, index2);
                        Info += "]=\"";
      int index3=luaInfo.IndexOf("//");
      luaInfo=luaInfo.Remove(0,index3+2);
      luaInfo=luaInfo.Trim();
                        Info += luaInfo + "\"";
     }
                    Info += "\n";
    }
                Info += "}";
    string strPath = Application.dataPath + "生成lua表的路径(.lua)";
                FileUtils.SaveStringFile(strPath, Info);//保存
    sr.Dispose ();
   } catch (Exception e) {Debug.Log ("转表失败 " + e); }
  } else { Debug.Log("不存在此路径" + protoPath);}
 }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值