Android System.DateTime.now的Unity系统时间不起作用?

时间:2019-12-03 21:06:24

标签: c# unity3d time

我编写的这段代码在编辑器上可以正常工作,但在手机上却无法正常工作。我使用统一2017.4.3。 问题是,当应用程序在Andriod设备中关闭时,根本感觉不到,但在编辑器中运行良好,因此为什么“ System.DateTime.now”在Andriod设备中不起作用离开使其工作?

using UnityEngine;
using System.Collections;
using System;

public class TimeMaster : MonoBehaviour {

    DateTime currentDate;
    DateTime oldDate;

    public string saveLocation;
    public static TimeMaster instance;

    // Use this for initialization
    void Awake () {

        instance = this;

        saveLocation = "LastSavedDate1";
    }

    public float CheckDate()
    {
        currentDate = System.DateTime.Now;
        string tempString = PlayerPrefs.GetString (saveLocation, "1");

        long tempLong = Convert.ToInt64 (tempString);

        DateTime oldDate = DateTime.FromBinary (tempLong);
        print ("oldDate : " + oldDate);

        TimeSpan difference = currentDate.Subtract (oldDate);
        print ("difference :" + difference);

        return(float)difference.TotalSeconds;

    }

    public void SaveDate ()
    {
        PlayerPrefs.SetString (saveLocation, System.DateTime.Now.ToBinary ().ToString ());
        print ("saving this date to player prefs" + System.DateTime.Now);
    }
    // Update is called once per frame
    void Update () {

    }
}

其余的在关卡管理器脚本中

if (PlayerPrefs.HasKey ("lifeTime"))
{    
            newLifeTime = PlayerPrefs.GetFloat ("lifeTime");
            if (CountAllLives) 
            {
                newLifeTime -= TimeMaster.instance.CheckDate ();
            }

} 

脚本的另一部分

void OnApplicationQuit()
{
    PlayerPrefs.SetInt ("PlayerLives",currentLives);
    PlayerPrefs.SetFloat ("lifeTime",newLifeTime);
    TimeMaster.instance.SaveDate ();
    print ("the count down is :" + newLifeTime);           
}

1 个答案:

答案 0 :(得分:2)

我创建了一个虚拟场景来实现您的功能,并且它对于编辑器和android设备均能正常工作。 您需要确保的一件事是退出时调用Application.Quit();,因为在使用Android设备的情况下,OnApplicationQuit仅在您调用Application.Quit();时执行,这与编辑器不同,后者是在用户使用时调用的停止播放模式。

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationQuit.html