【发布时间】:2020-07-27 22:19:52
【问题描述】:
我目前正在使用 Unity 开发一款 2D 手机游戏,我有一个类似于 Angry Birds 的评分系统,根据你在关卡结束时留下的弹丸数量,你会得到 1 到 3 个“符文”。符文保存在 PlayerPrefs 中。
我的问题,有没有办法将收集的符文限制为每级三个?目前他们只是在不断地计算。
以下是我用来保存符文的脚本,它适用于每个级别。 任何想法,将不胜感激。提前致谢
#region Rune System
public void RuneCollection()
{
int currentRunes = PlayerPrefs.GetInt("Runes", 0);
if (currentSpears >= 2)
{
Debug.Log("3 runes collected!");
collectedRunes = 3;
}
else if (currentSpears >= 1)
{
Debug.Log("2 runes collected!");
collectedRunes = 2;
}
else
{
Debug.Log("1 rune collected!");
collectedRunes = 1;
}
currentRunes += collectedRunes;
PlayerPrefs.SetInt("Runes", currentRunes);
}
#endregion
【问题讨论】:
-
是的,显然通过在添加
collectedRunes后检查currentRunes...问题出在哪里? ...但恕我直言,应该有不同的算法 - 电流应该是当前和收集的最大值 -
为什么它有+1? OP没有表现出任何试图自己解决问题的尝试
-
是的,但是它们是在每个级别之后计算的,所以如果我要玩 1 级,例如 3 次,它会继续计数,并且 Id 有 9 个符文而不是 3 个。我觉得我错过了那里的东西
-
是的,您在添加collectedRunes 后缺少检查currentRunes - 如果它比您需要的更多,那么您应该设置为您需要的值......问题又出在哪里?
-
一般来说,你不应该(ab)使用 PlayerPrefs 来存储用户进度......它很容易丢失和操纵......而是使用正确的 FileIO 并将你的值存储在一个(加密的)文件中跨度>