官网网站建设需求文档,沈阳网络关键词排名,类似设计师联盟的网站,微站直播平台今天我们要谈的话题是热更新辅助翻译工具 那么什么是热更新辅助翻译工具呢 我们聊的其实是一种语言翻译工具#xff0c;就我们游戏而已采用的是c#语言开发#xff0c;热更采用的是lua语言#xff0c; 那么我们平时热更是不是需要写lua代码呢#xff1f;#xff1f;#x…今天我们要谈的话题是热更新辅助翻译工具 那么什么是热更新辅助翻译工具呢 我们聊的其实是一种语言翻译工具就我们游戏而已采用的是c#语言开发热更采用的是lua语言 那么我们平时热更是不是需要写lua代码呢 这样问题就来了lua因为是动态语言调式麻烦不容易发现很难维护等各种问题那么就引发了很多优秀的团队在研究怎么样研究一个语言翻译工具呢?? 如果说我们制作出来了一个从c#语言翻译成lua语言的工具的话是不是意味着我们在也不需要忍受lua的臭脾气了呢完全正确你摆脱了他。 怎么做到的呢比如外网出现严重bug你以往就抓紧写lua脚本但是现在有了他你不用了写了,你还是写c#代码写完之后交给工具流即可他会把你写的c#翻译成lua脚本的。
不对好像我说了很多废话现在的问题是我怎么造一个c#语言翻译成lua的工具呢 好难我好像无从下手莫慌。 我们先分析下平时你注意了没有我们的c#代码写完之后编译他会变成一个叫Mono.Ceil的库,是不是想起来了。没有想起来是吧赶紧动手试试然后我们会发现一个有意思的东西就是Mono.Ceil这个dll中竟然有我们写的c#类的名字 字段的类型 以及类型之间的继承关系 以及方法签名 完美那不就非常好翻译了吗 来看案例 c#代码 Mono.Ceil中找到的信息 public class A TypeDefinition:A { Fields int a 2; xint int b 3; yint int Test() Methoths { Test:int return a b; } }
哇 好像发现了规则 那么我对应的lua 不就是local A class(“A”) function A:Test() end …类似是不是很简单 就是固定字符串Ceil中找到的信息 进行组合然后文件写入就不可以
不对啊 我好像没有看到方法体啊这个方法体去被编译器放哪里去了呢经过各种资源的查询原来已经成为CIL里面公共中间语言。 但是好像看起来格式比较低级啊已经到了指令集的级别啊不慌我们反编译他什么工具ILSPY工具啊经过翻译之后看到了这个信息
IL语言被ILSpy工具翻编译之后的状态 stoc:int32(a,ldc,i4:int32(2)) stoc:int32(b,ldc,i4:int32(3)) ret addint32( ldloc:int32(a),idloc:int32(b) )
翻译成方法体 local a 2 local b 3 return (a b)
看着成功了99% 但是剩余1%的路是非常艰辛的动手是最好的老师。