我使用Unity3D开发跨平台的移动游戏,即Android和iOS。 它是用C#编写的。
其中一个变量计算如下:
long hp;
int lv;
hp = (long)Math.Pow(1.5f, lv);
该代码适用于PC和Android。但不是在iOS中。在iOS中,即使lv=0
,hp
的值也会变为46071824188000017409。
我尝试使用Xcode调试它,Math.Pow(1.5f, lv)
的值没有问题,所以问题是长转换。我尝试使用System.Convert.ToInt64
,它看起来是一样的。
iOS6和iOS7都存在问题。任何人都知道如何处理这个?
编辑:这里有一些调试:
float temp = Mathf.Pow(1.5f, lv); //returns 1
long temp2 = (long)temp; //returns 4607182418800017409