如何统一为每个循环增加内部分数?
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
将是定义的阈值,用于实现平等
我正在使用 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.
使用 Mathf.Approximately
来代替它使用那个小的 "epsilon" 作为它的等式定义。
if (Mathf.Approximately(_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b, answer))
类似于
if (_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b - answer <= diferenceSmallEnoughThreshold)
其中 differenceSmallEnoughThreshold
将是定义的阈值,用于实现平等