C# 反系统时间欺骗未完全工作

C# 反系统时间欺骗未完全工作,c#,unity3d,systemtime,C#,Unity3d,Systemtime,发生了什么事: 除了在使用离线硬币计数始终为0后的一段时间外,它在大多数情况下都有效。我正在努力做到这一点,这样玩家就不能仅仅改变他们的系统时间来更快地获得更多的钱。我也没有试图通过连接服务器进行时间检查来实现这一点。有人知道出了什么问题吗 如果语句处于唤醒状态: if (PlayerPrefs.GetInt("offlineCheck").Equals(1)) { ButtonCanvas.gameObject.SetActive(false);

发生了什么事: 除了在使用离线硬币计数始终为0后的一段时间外,它在大多数情况下都有效。我正在努力做到这一点,这样玩家就不能仅仅改变他们的系统时间来更快地获得更多的钱。我也没有试图通过连接服务器进行时间检查来实现这一点。有人知道出了什么问题吗

如果语句处于唤醒状态:

if (PlayerPrefs.GetInt("offlineCheck").Equals(1))
        {
            ButtonCanvas.gameObject.SetActive(false);
            OfflineCanvas.gameObject.SetActive(true);
            PlayerPrefs.SetInt("offlineCheck", 0);
            // year not the same
            if (!PlayerPrefs.GetInt("year").Equals(System.DateTime.Now.Year))
            {
                // Add 24 Hour Coins
                if (PlayerPrefs.GetInt("year") < System.DateTime.Now.Year)
                {
                    offlineCoinCount = PlayerPrefs.GetInt("OfflineCoinsVal") * (24 * 60);
                } else {
                    offlineCoinCount = 0;
                }
            }
            else
            { // same Year
              // month not the same
                if (!PlayerPrefs.GetInt("month").Equals(System.DateTime.Now.Month))
                {
                    // Add 24 Hour Coins
                    if (PlayerPrefs.GetInt("month") < System.DateTime.Now.Month)
                    {
                        offlineCoinCount = PlayerPrefs.GetInt("OfflineCoinsVal") * (24 * 60);
                    } else {
                        offlineCoinCount = 0;
                    }
                }
                else
                { // Same Month
                  // day not the same
                    if (!PlayerPrefs.GetInt("day").Equals(System.DateTime.Now.Day))
                    {
                        // Add 24 hours?
                        if (PlayerPrefs.GetInt("day") < System.DateTime.Now.Day)
                        {
                            offlineCoinCount = PlayerPrefs.GetInt("OfflineCoinsVal") * (24 * 60);
                        } else {
                            offlineCoinCount = 0;
                        }

                    }
                    else
                    { // Same Day
                      // hour not the same
                        if (!PlayerPrefs.GetInt("timeHour").Equals(System.DateTime.Now.Hour))
                        {
                            // Add Coins
                            if (PlayerPrefs.GetInt("timeHour") < System.DateTime.Now.Hour)
                            {
                                offlineCoinCount = PlayerPrefs.GetInt("OfflineCoinsVal") * (((System.DateTime.Now.Hour - PlayerPrefs.GetInt("timeHour")) * 60) - (System.DateTime.Now.Minute - PlayerPrefs.GetInt("timeMin")));
                            } else {
                                offlineCoinCount = 0;
                            }

                        }
                        else
                        { // Same hour
                          // min not the same
                            if (!PlayerPrefs.GetInt("timeMin").Equals(System.DateTime.Now.Minute))
                            {
                                // Add coins
                                offlineCoinCount = PlayerPrefs.GetInt("OfflineCoinsVal") * (System.DateTime.Now.Minute - PlayerPrefs.GetInt("timeMin"));

                            }
                            else
                            { // Same min

                            }
                        }
                    }
                }
            }
        }
if(PlayerPrefs.GetInt(“离线检查”).Equals(1))
{
ButtonCanvas.gameObject.SetActive(false);
OfflineCanvas.gameObject.SetActive(true);
PlayerPrefs.SetInt(“离线检查”,0);
//今年不一样
如果(!PlayerPrefs.GetInt(“年”)等于(System.DateTime.Now.year))
{
//添加24小时硬币
if(PlayerPrefs.GetInt(“年”)
此反时间欺骗的其余代码

private void OnApplicationQuit()
{
    saveDateTime();
    PlayerPrefs.SetInt("offlineCheck", 1);
    //offlineCoinCount = 0;
}


private void OnApplicationFocus(bool focus)
{
    saveDateTime();
    PlayerPrefs.SetInt("offlineCheck", 1);
    //offlineCoinCount = 0;
}
private void OnApplicationPause(bool pause)
{
    saveDateTime();
    PlayerPrefs.SetInt("offlineCheck", 1);
    //offlineCoinCount = 0;
}
public void saveDateTime()
{
    //Player Restart Game
    //////
    /// Check Time for coin bonus
    ////

    if (PlayerPrefs.GetInt("year").Equals(System.DateTime.Now.Year))
    { // Same Year
        if (PlayerPrefs.GetInt("month").Equals(System.DateTime.Now.Month))
        { // Same Month
            if (PlayerPrefs.GetInt("day").Equals(System.DateTime.Now.Day))
            { // Same Day
                if (PlayerPrefs.GetInt("timeHour").Equals(System.DateTime.Now.Hour))
                { // Same Hour
                    if (PlayerPrefs.GetInt("timeMin").Equals(System.DateTime.Now.Minute))
                    { // Same Minute

                    }
                    else
                    { // Different Minute
                        // Update if new Minute is higher than old
                        if (PlayerPrefs.GetInt("timeMin") < System.DateTime.Now.Month)
                        {
                            PlayerPrefs.SetInt("timeMin", System.DateTime.Now.Minute);
                        }
                    }

                }
                else
                { //Different Hour
                    // Update if new hour is higher than old
                    if (PlayerPrefs.GetInt("timeHour") < System.DateTime.Now.Month)
                        PlayerPrefs.SetInt("timeHour", System.DateTime.Now.Hour);
                    PlayerPrefs.SetInt("timeMin", System.DateTime.Now.Minute);
                }
            }
            else
            { // Different Day
              // Update if new day is higher than old
                if (PlayerPrefs.GetInt("day") < System.DateTime.Now.Month)
                {
                    PlayerPrefs.SetInt("day", System.DateTime.Now.Year);
                    PlayerPrefs.SetInt("timeHour", System.DateTime.Now.Hour);
                    PlayerPrefs.SetInt("timeMin", System.DateTime.Now.Minute);
                }
            }

        }
        else
        { // Different Month

            // Update if new month is higher than old
            if (PlayerPrefs.GetInt("month") < System.DateTime.Now.Month)
            {
                PlayerPrefs.SetInt("month", System.DateTime.Now.Year);
                PlayerPrefs.SetInt("day", System.DateTime.Now.Year);
                PlayerPrefs.SetInt("timeHour", System.DateTime.Now.Hour);
                PlayerPrefs.SetInt("timeMin", System.DateTime.Now.Minute);
            }
        }
    }

    else
    { // Different Year
        // Update if new year is higher than old
        if (PlayerPrefs.GetInt("year") < System.DateTime.Now.Year)
        {
            PlayerPrefs.SetInt("year", System.DateTime.Now.Year);
            PlayerPrefs.SetInt("month", System.DateTime.Now.Year);
            PlayerPrefs.SetInt("day", System.DateTime.Now.Year);
            PlayerPrefs.SetInt("timeHour", System.DateTime.Now.Hour);
            PlayerPrefs.SetInt("timeMin", System.DateTime.Now.Minute);
        }
    }
}
applicationquit()上的私有void
{
saveDateTime();
PlayerPrefs.SetInt(“离线检查”,1);
//offlineCoinCount=0;
}
应用程序焦点上的私有无效(布尔焦点)
{
saveDateTime();
PlayerPrefs.SetInt(“离线检查”,1);
//offlineCoinCount=0;
}
应用程序暂停时的私有无效(布尔暂停)
{
saveDateTime();
PlayerPrefs.SetInt(“离线检查”,1);
//offlineCoinCount=0;
}
public void saveDateTime()
{
//玩家重启游戏
//////
///检查硬币奖金的时间
////
if(PlayerPrefs.GetInt(“年”).Equals(System.DateTime.Now.year))
{//同年
if(PlayerPrefs.GetInt(“月”).Equals(System.DateTime.Now.month))
{//同月
if(PlayerPrefs.GetInt(“day”).Equals(System.DateTime.Now.day))
{//当天
if(PlayerPrefs.GetInt(“timeHour”).Equals(System.DateTime.Now.Hour))
{//同一时间
if(PlayerPrefs.GetInt(“timeMin”).Equals(System.DateTime.Now.Minute))
{//同一分钟
}
其他的
{//不同的分钟
//如果新分钟数高于旧分钟数,则更新
if(PlayerPrefs.GetInt(“timeMin”)