Проблема с увеличением достижения в Google Play Games в Unity - PullRequest
0 голосов
/ 06 мая 2020

У меня есть достижение, которое увеличивается с течением времени. Я рассчитываю прожитое время с помощью Time.time. Когда я d ie, я увеличиваю достижение со значением 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) => {

                });
            }
        }
    }

Количество прожитого времени, которое увеличивается в достижении, намного больше, чем должно.

Есть предложения? Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 июня 2020

Вы пробовали использовать Time.deltaTime? Или поместите этот блок кода в -

void FixedUpdate() { 
    //code 
}
0 голосов
/ 06 мая 2020

Попробуйте, если это не сработает, скажите мне, что дает вам отладка.

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) => {
            });
        }
    }
}

edit: хорошо, я думаю, я знаю, что происходит, вы увеличиваете его при обновлении l oop, поэтому вы должны реализовывать его много раз

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

            });
        recorded = true;
        }
...