在 Unity 中增加 Google Play 游戏成就的问题

Posted

技术标签:

【中文标题】在 Unity 中增加 Google Play 游戏成就的问题【英文标题】:Problem increasing an achievement in Google Play Games in Unity 【发布时间】:2020-08-20 21:27:03 【问题描述】:

我的成就会随着幸存的时间而增加。 我用 Time.time 计算存活时间。当我死时,我会使用 Time.time 值增加成就以增加存活秒数,但它增加的次数远远超过应有的数值。我的代码:

using UnityEngine;
using UnityEngine.UI;
using GooglePlayGames;

    public class Timer : MonoBehaviour
    
        private float StartTime;
        public static float TimerControl;

        void Start()
        
            StartTime = Time.time;
        

        void Update()
        
            //The player is alive
            if (PlayerController.dead == false)
            
                TimerControl = Time.time - StartTime;
            

            //The player is dead
            if (PlayerController.dead == true)
            
                PlayGamesPlatform.Instance.IncrementAchievement(GPGSIds.achievement_survivor, (int)(TimerControl), (bool success) => 

                );
            
        
    

在成就中增加的生存时间远远大于应有的时间。

有什么建议吗?谢谢!

【问题讨论】:

它增加了多少与应该增加多少? 成就是总共生存1小时(3600步,每秒1步)。在我上一次做的测试中,我存活了 23 秒,并且增加了超过 8% 的成就……这没有意义 【参考方案1】:

试一试,如果它不起作用,请告诉我调试结果是什么。

using UnityEngine;
using UnityEngine.UI;
using GooglePlayGames;
public class Timer : MonoBehaviour

    void Update()
    
        //The player is dead
        if (PlayerController.dead == true)
        
        Debug.Log("Time : " + Time.time);
        PlayGamesPlatform.Instance.IncrementAchievement(GPGSIds.achievement_survivor, (int)(Time.time), (bool success) => 
            );
        
    

编辑:好吧,我想我知道你在更新循环中增加它发生了什么,所以你必须多次实施它

bool recorded = false;
// ...
        //The player is dead
        if (PlayerController.dead == true && !recorded)
        
            PlayGamesPlatform.Instance.IncrementAchievement(GPGSIds.achievement_survivor, (int)(TimerControl), (bool success) => 

            );
        recorded = true;
        

【讨论】:

生存20秒,成就提升62%。它不起作用,控制台没有显示任何内容。 您是从编辑器运行的吗?如果您的控制台没有显示任何内容并且您的调试部分(白色感叹号)处于活动状态并且搜索框中没有文本过滤器,则不会调用此方法,并且您的成就会从不同的脚本中递增跨度> 从编辑器运行控制台不会显示与计时器相关的任何内容。从电话里跑出来什么也没显示。不可能是从另一个脚本中增加成就的,我没有在其他地方写过它 在我的游戏中,我有一个显示秒数并完美显示的计时器:GetComponent().text = ((int)TimerControl).ToString();计时器工作得很好,当我死时它会停止,甚至将分数保存在一个高分数组中。 好吧,我想我知道发生了什么,我更新了我的答案【参考方案2】:

您是否尝试过使用Time.deltaTime? 或者将该代码块放入 -

void FixedUpdate()  
    //code 

【讨论】:

以上是关于在 Unity 中增加 Google Play 游戏成就的问题的主要内容,如果未能解决你的问题,请参考以下文章

小松教你手游开发unity实用技能Unity Mesh更新的时候增加内存

Google Play 游戏和 GoogleMobileAds 在 Unity 5 中无法协同工作

如何在 Unity 中添加 Google Play 游戏注册脚本

Unity Google Play 游戏插件无法在 Xcode iOS 中编译

如何在 Unity 3D 中使用 google play 服务?

我可以在 Unity Android Free 中使用 Google Play 游戏服务 - 实时多人游戏吗?