我编写的这段代码在编辑器上可以正常工作,但在手机上却无法正常工作。我使用统一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);
}
答案 0 :(得分:2)
我创建了一个虚拟场景来实现您的功能,并且它对于编辑器和android设备均能正常工作。
您需要确保的一件事是退出时调用Application.Quit();
,因为在使用Android设备的情况下,OnApplicationQuit
仅在您调用Application.Quit();
时执行,这与编辑器不同,后者是在用户使用时调用的停止播放模式。
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationQuit.html