【问题标题】:Limit collected points to three per level (Like the Stars in Angry Birds)将收集的点数限制为每级三个(就像愤怒的小鸟中的星星)
【发布时间】: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 并将你的值存储在一个(加密的)文件中跨度>

标签: c# unity3d


【解决方案1】:

如果你想跟踪每个级别的符文,那么你应该做这样的事情

public void RuneCollection()
{
    var levelIndex = SceneManager.GetActiveScene().buildIndex;
    int currentRunes = PlayerPrefs.GetInt("Runes" + levelIndex, 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;
    if (currentRunes > 3) currentRunes = 3;
    
    PlayerPrefs.SetInt("Runes" + levelIndex, currentRunes);
}

您将在PlayerPrefs 中拥有每个级别的记录,并且玩家在每个级别上获得的分数不会超过 3 分。我不知道你是如何改变关卡的,所以我在构建中对场景索引进行了基本查找。如果你有其他系统,那么你应该自己实现levelIndex变量。

【讨论】:

  • 当然是快!是的,我明白你的意思。那会奏效的。谢谢。我很感激。
猜你喜欢
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多