ulua整数溢出的BUG

我们在使用unity5.x开发的新游戏《江湖X》中使用ulua做一些业务逻辑。

前期为了开发迅速,没有使用wrap,使用的动态反射(所以很慢)。这两天针对性优化,将lua wrap用了起来。发现一个诡异现象:

在editor中跑得很正常的逻辑,在IOS真机上整型都溢出了。

具体内容是我们在C#的一个类中记录了攻击扣血(负数),传到LUA中后变成了一个越界整数,结果直接变成给敌方加血了。。还是一个巨大的整数,瞬间补满,吓死人 - -#

经过排查以后发现,使用ulua生成的wrap 类中,只要有int类型的数,就不能为负数,否则在lua那边取出来就是一个溢出的整数。大概搜了一下,应该是跟ulua不支持int64相关,没有仔细研究了。

没办法,于是我们就做了一件很丑的事情……

public string AddHpStr{get{return AddHp.ToString();}}
public string AddMpStr{get{return AddMp.ToString();}}
public string AddBallStr{get{return AddBall.ToString();}}
public string AddHudunStr{get{return AddHudun.ToString();}}

在lua中这样调用……

local dAddHp = tonumber(br.AddHpStr)
local dAddMp = tonumber(br.AddMpStr)
local dAddBall = tonumber(br.AddBallStr)
local dAddHudun = tonumber(br.AddHudunStr)

虽然很丑。。但是问题貌似暂时解决了。
不知道是否有更优雅一点的解决方案?如果有,欢迎告诉我。

猜你喜欢

转载自blog.csdn.net/rcfalcon/article/details/51412812