"OnApplicationPause" 函数在应用程序启动时起作用。适用于安卓和Unity3D。

3

当我在游戏编辑器或手机上启动我的游戏时,它会在2-3秒内出现故障,并调用函数OnApplicationPause。但是当我关闭应用程序/暂停编辑器时,它不会调用。这很糟糕,所以该怎么解决呢?以下是函数代码:

void OnApplicationPause()
{
    DateTime time = DateTime.Now;
    SaveVariablesInClass();
    PlayerPrefs.SetString("SV", JsonUtility.ToJson(save)); //saves special class
}

void SaveVariablesInClass()
{
    save.Bananas = bananas;
    save.GoldBananas = goldBananas;

    save.TwoBananasSpawnChance = twoBananasSpawnChance;
    save.HigherBananaLevelChance = higherBananaLevelChance;
    save.SimpleBananaStormChance = simpleBananaStormChance;

    save.GoldBananaChance = goldBananaChance;
    save.TwoGoldBananaChance = twoGoldBananaChance;

    save.offlineEfficiency = offlineEfficiency;
    save.offlineProductionTime = offlineProductionTime;

    save.goldCoefficient = goldCoefficient;

    save.BonusLevels = bonusLevels;
    save.GoldBonusLevels = goldBonusLevels;
    save.SimpleBonusLevelPrices = simpleBonusLevelPrices;
    save.GoldBonusLevelPrices = goldBonusLevelPrices;
    save.simpleMaxLevels = simpleMaxLevels;
    save.goldMaxLevels = goldMaxLevels;

    save.time = time.ToString();

    save.CurrentSimpleBonus1 = currentSimpleBonus1;
    save.LaunchedGame = launchedGame;
}

我已经编辑了这个问题。 - JediMan
你尝试过给 OnApplicationPause 一个 bool 参数并在其为 false 时跳过吗? - derHugo
我现在尝试了一下,但是我无法保存我的进度。之前有时候不会出现这种情况。 - JediMan
如果布尔值为“true”,则仍应执行。 “SaveVariablesInClass();”在做什么?只是想看看可能导致延迟的原因在哪里。 - derHugo
我发现OnApplicationPause()在真正的暂停中也无法工作,游戏开始时的延迟取决于渲染。详细信息请参见:https://imgur.com/a/LSxmLX3 - JediMan
显示剩余2条评论
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1
您的方法缺少bool参数。应该是OnApplicationPause(bool pauseStatus)。OnApplicationPause会在每个GameObject的Awake之后被调用。因此,您的代码应该是:
void OnApplicationPause(bool pauseStatus)
{
    if (pauseStatus)
    {
       DateTime time = DateTime.Now;
       SaveVariablesInClass();
       PlayerPrefs.SetString("SV", JsonUtility.ToJson(save)); //saves special class
    }
}
评论区中的延迟是由渲染而非脚本引起的。

我再次尝试,但我的方法仍然无效。在游戏暂停或离开游戏时都不起作用。 - JediMan
谢谢!当我在安卓设备上测试时,它开始工作了! - JediMan
没问题。而且PlayerPrefs并不是保存所有游戏数据的最佳选择。保存在PlayerPrefs中的数据很容易被用户更改,应主要用于诸如游戏设置之类的事情。 - Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,