要将分数上传到游戏中心,他们要求您拥有int64_t
类型的值。
有没有办法简单地将float
转换为int64_t
?
我已经围绕得分构建了我的整个游戏,我需要一个简单的解决方案吗?
答案 0 :(得分:1)
我会捅这个。其他人的答案(来自http://www.cocos2d-iphone.org/forum/topic/14839)
每个分数都必须以int64的形式提交。因此,您需要转换浮动以匹配排行榜的设置。所以固定3 dp你需要将浮点数乘以1000以得到第三个dp int - 然后提交。
所以
int64_t gcScore =(int64_t)(得分* 1000.0f);
gkscore.value = gcScore;
随着一些四舍五入的发挥,确保什么是重要的 获得提交的内容也是向玩家展示的 - 我们有一些 在GC和游戏中有时出现问题 - 只是 必须通过每个显示器和&将得分值转换为 确保他们注意正确显示。
排行榜设置的所有更改都需要一段时间,而且 提交的分数通常也不会出现一段时间。游戏 说实话,中心沙箱非常糟糕。一旦你上线它就是 更好地回应新的分数,但你不能做任何改变 排行榜格式,所以你必须坚持在沙盒中得到 没错。
答案 1 :(得分:0)
如果您的花车尺寸有限(小于9,223,372,036,854,775,807),则转换为
int64_t myInt = (int64_t) myFloat;
如果要“保存”小数,可以缩放结果(将浮点数乘以10或100):
int64_t myInt_scaled = (int64_t) (myFloat * 100.0);
答案 2 :(得分:0)
您需要将float转换为int64_t然后检查溢出。此演员表将截断该数字,即5.655将变为5。
try {
score = (int64_t)floatScore;
}
catch(OverflowException e) {
// Print error
}