游戏应该每获得200分就冻结,然后会出现一个测验。在回答之后,游戏应该恢复。 在我的代码中它只发生一次。将freezescore增加到400以便下一个测验出现后,游戏不会冻结。
public static int freezescore = 200;
void Update ()
{
if (score == freezescore)
{
freeze();
Quiz();
Debug.Log("" + freezescore);
}
}
public bool freeze()
{
Time.timeScale = 0.1f;
return true;
}
public void Quiz()
{
if (freeze() == true)
{
if (canvasquiz != null)
{
canvasquiz.SetActive(true);
}
}
}
//Attached this method to the button
public void Resume()
{
if (canvasquiz != null)
{
canvasquiz.SetActive(false);
Time.timeScale = 1.0f;
}
score = score + 1;
freezescore = freezescore + 200;
}
答案 0 :(得分:1)
老实说,我会稍微改写一下:
private int freezeScore;
private int score;
private void Update()
{
if (score >= freezeScore)
{
StartQuiz();
}
}
public void StartQuiz()
{
Time.timeScale= 0;
if (canvasquiz != null)
{
canvasquiz.SetActive(true);
}
}
//Attatch to button
public void EndQuiz()
{
if (canvasquiz != null)
{
canvasquiz.SetActive(false);
Time.timeScale = 1.0f;
}
score += 1;
freezeScore += 200;
}
这是未经测试的,因为我没有您的所有代码,因此您可能需要稍微修改一下,但我希望您明白这一点。
有些原因导致事情可能没有按照你的方式运作:
if (score == freezescore)
函数中的 Update
意味着如果玩家在任何时间获得超过一个点,那么他们可能会错过200,400或600,依此类推,这意味着{{1}不会触发。
另外,我不知道为什么Quiz
函数返回bool并在它总是返回true时被检查。 freeze
中的if (freeze() == true)
语句始终为真。您也可以在Quiz
函数中设置时间刻度。