玩游戏成就重置和怪异行为

时间:2018-11-07 16:32:11

标签: android unity3d google-play google-play-services google-play-games

我们对Android上的成就存在疑问。解锁后,它们会在一段时间后再次锁定。然后,在打开应用程序后,相同的成就会再次解锁。最奇怪的是,对于每个用户/设备而言,一次又一次解锁的成就是不同的。

该游戏发布于很久以前,现在我们只是添加成就。我们未在Google Play中使用应用程序签名。但是,对于Firebase和多个其他服务来说,这从来不是问题。我们设置中的一件事,也许是不寻常的事情是,我们在Google Play中有两个应用程序(同一应用程序的生产和调试版本),并且它们都链接到游戏服务中的同一游戏。但是,最终用户永远不会使用这两个应用程序,因为调试应用程序甚至都没有发布,而且他们也遇到相同的问题。

此外,在Play游戏应用中发生了一些麻烦。最新示例:单击标题后,显示“ Achievments 10/28”。但是,在打开成就窗口本身后,它会显示“成就12/28”!

截屏1:

https://i.stack.imgur.com/Di917.jpg

点击“成就:

https://i.stack.imgur.com/CjBBK.jpg

如您所见,它从10/28变为12/28。在其他情况下,它类似于“外部0/28,进入后13/28”。似乎是这些成就,一段时间后重新进入应用程序便一次又一次解锁。

我们正在使用Unity 2017.3.1p1

我们在解锁成就之前使用的代码,在社交认证之后被调用:

        if (Social.localUser.authenticated)
        {
            Log("Player authenticated, loading achievements...");
            Social.LoadAchievements(x =>
            {
                _achievements = x;
                string count = x == null ? "null" : x.Length.ToString();
                Log("Achievements loaded. Count: " + count);

                RefreshAchievements();
            });
        }
        else
        {
            Log("Player NOT authenticated, skipping achievements.");
        }

我们用于解锁成就的代码:

            try
        {
            if (Social.localUser != null && Social.localUser.authenticated && _achievements != null)
            {
                var achievement = _achievements.FirstOrDefault(x => x.id == id);
                if (achievement == null || achievement.completed)
                {
                    return;
                }

                Social.ReportProgress(
                    id,
                    progress, success =>
                    {
                        LogDebug("Unlock achievement '" + name + "'; Success: " + success);
                    });
            }
        }
        catch (Exception ex)
        {
            LogError("Exception while unlocking achievement", ex.ToString());
        }

我尝试更新Play Services SDK。我添加了上面的代码,以某种方式通过首先加载成就来“初始化”成就。我试图不取消已经解锁的功能。

某些玩家出现以下错误:

*** [Play Games Plugin DLL] 11/07/18 19:18:54 +03:00 ERROR: Cannot refresh achievement CgkI_9Ps96kPEAIQCg: ERROR_INTERNAL

但是,并非总是如此,有时在打开几次应用程序后一次又一次解锁相同的成就,而不会出现上述错误。最奇怪的是,警告信息是在玩家成功通过身份验证后打印的,这证明以下日志仅在上面几行打印:(此日志的代码在以前的代码示例中可见)

[22.4727811] [ACHIEVEMENTS] Player authenticated, loading achievements...

0 个答案:

没有答案