【问题标题】:percentComplete for Achievements not returning with decimal values未返回十进制值的成就的百分比完成
【发布时间】:2018-01-12 21:31:33
【问题描述】:

来自这个帖子:about percentComplete in GKAchievement

到目前为止,我已经设法报告了成就进度,并且当提交的进度不包含十进制值时,我没有任何问题,例如执行 10 次任务以获得此 x 成就。然后每个 reportProgress 将是 10%。

但是,我正在尝试编写一项成就,该成就只能在完成一项任务 1000 次后才能完成。因此,每完成一项任务就有 0.1 个进度。

在检索 percentComplete 时如何获取十进制值是否有修复?我不确定保存的值或返回的值是否转换为 int。

我要做的是从 GameCenter 检索当前的成就进度,并在每次任务完成时将其增加 0.1d。如果我尝试报告 4.1d 的进度,我会在日志中看到:

报告成就 de.company.testapp.achievement1,4.100000

那是系统生成的日志。那么假设 GameCenter 将其保存为带小数的 double 并且仅在您请求 percentComplete 时返回整数是否正确?

当然我可以保留一个本地计数器,但我试图避免在用户切换到另一台设备时或本地经过身份验证的用户在设备内发生更改时出现分数不一致。同步分数或更新我们的服务器以跟踪每个玩家的每一项成就可能有点过分。

有人对我应该如何正确处理跟踪此类成就有任何建议吗?

提前致谢。

PS。我在 Unity 中开发,所以我使用 GameCenterPlatform,但我尝试在 Objective-c 端检索百分比完成,但它也返回百分比完成的整数。

【问题讨论】:

  • 这是一个非常烦人的问题,现在面临同样的事情。有什么解决办法吗?或者 Unity 的任何回应是什么导致它以降低的精度返回?

标签: ios unity3d game-center


【解决方案1】:

我认为本地存储是您唯一的选择。如果您担心跨设备跟踪,您可以尝试使用云存储来获取特定信息。我认为这是您以比 GameCenter 允许的更高的精度跟踪信息的唯一真正选择,除非您还想在 GameCenter 的辅助服务器上跟踪信息。

【讨论】:

  • 嗨意思是,这就是我们想要的,而不是跟踪我们服务器中的分数。所以我猜这意味着Apple刚刚将percentComplete声明为double但将值视为整数?我敢肯定这不是第一个需要用十进制值报告分数的情况。我不确定这是否只是一个错误,或者是否已经存在修复,但我从昨天开始一直在寻找修复但找不到明确的修复。
  • 你在这方面有什么成功吗?
【解决方案2】:

我也期待苹果提供与此问题相关的错误修复,但发现了这个...

来自 Apple 的回答:“百分比是使用双精度报告的,但 存储为整数百分比,例如1%、2%、3%、...、100%。你 无论如何都应该在本地存储进度,因为他们可能 放在他们无法连接到 Game Center 的地方。”

对于可以访问 Apple 开发者论坛的用户: https://devforums.apple.com/message/522769

建议: - 我们可以使用云用户默认偏好来存储我们的分数值。这是一个有用的云偏好库 https://github.com/ArtSabintsev/Zephyr

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多