如何统一为每个循环增加内部分数?

How to increment score inside for each loop in unity?

我正在使用 foreach 循环来检查用户输入的给定 5 个乘法问题的答案。 (使用实例在开始时显示 5 个问题)

现在我尝试添加分数计数器并在答案正确时将其递增 1,并且根据分数我将显示星星。例如,如果分数小于 3,则为 1 星,如果为 4,则为 2 星,并且如果 5 那么 3 星。即使所有答案都正确,我也只能得到一颗星。谁能告诉我如何实现这一目标?

我尝试在 if 语句中添加 score++。但它不会增加分数值。

public void CheckButton() 
{
    int answer;

    foreach (TestModeQuestionUI _TestModeQuestionUIRefrence in testModeQuestionExampleList)
    {
        answer = _TestModeQuestionUIRefrence.GetAnswerInputField();

        if ((_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b) == answer)
        {
            _TestModeQuestionUIRefrence.SetResultOfAnswerInputField(1);
            score++;
        }
        else
        {
            _TestModeQuestionUIRefrence.SetResultOfAnswerInputField(2);
        }
    }

    roundCompletePanel.SetActive(true);
    CheckHowManyStars();

    ShowRoundCompletePanel(score);
}

这里只是假设

(_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b) == answer

都是float值。 从不 直接使用 == 比较 float。它们可能永远不相等,即使在逻辑上它们应该相等。由于 Floating point precision.

,它们可能相差很小 "epsilon"

使用 Mathf.Approximately 来代替它使用那个小的 "epsilon" 作为它的等式定义。

if (Mathf.Approximately(_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b, answer))

类似于

if (_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b - answer <= diferenceSmallEnoughThreshold)

其中 differenceSmallEnoughThreshold 将是定义的阈值,用于实现平等