【发布时间】:2017-01-17 06:51:30
【问题描述】:
我正在做一个多项选择测验游戏,如果单击错误答案,我会尝试以绿色突出显示正确答案。例如,如果我有 A 、 B 、 C 和 D 并且“A”是正确答案。我想如果我选择“B”将B变为红色并显示绿色的正确答案,在这种情况下为“A”。现在我有,如果我点击正确的答案,它会显示为绿色,正如我想要的那样。如果我按错误的答案,它会显示为红色。我缺少的是当我点击错误的答案时,我还想突出显示正确的答案。
这是我的功能:
在游戏控制器中:
public bool theAnswerIsCorrect;
public bool IsCorrected()
{
return theAnswerIsCorrect;
}
public void AnswerButtonClick(bool isCorrect)
{
if (isCorrect)
{
Debug.Log("I'm Correct");
theAnswerIsCorrect = true;
playerScore += currentRoundData.pointAddedForCorrectAnswer;
scoreDisplayText.text = "Score: " + playerScore.ToString();
}
else
theAnswerIsCorrect = false;
// Do we still have questions?
if (questionPool.Length > questionIndex + 1)
{
//questionIndex++;
UpdateQuestionIndex();
StartCoroutine(DelayTime(3));
// ShowQuestion();
}
else
{
EndRound();
}
}
这是一个只保存我的数据的类
public class answerData {
public string answerTxt;
public bool isCorrect;
}
这是在ButtonClick函数中使用的(问题乞求中的代码)->这一行
gameController.AnswerButtonClick (AnswerData.isCorrect);
在检查器中,我通过布尔值指定正确答案是什么
*** 这里的新脚本“选择正确的按钮”
// store reference to btn text
public Text answerText;
private answerData AnswerData;
private GameController gameController;
public static AnswerButton _instace;
private void Awake()
{
_instace = this;
}
// Use this for initialization
void Start ()
{
gameController = FindObjectOfType<GameController> ();
}
public void Setup(answerData data)
{
AnswerData = data;
answerText.text = AnswerData.answerTxt;
}
IEnumerator ReturnButtonColor()
{
yield return new WaitForSeconds(2.9f);
GetComponent<Button>().image.color = Color.white;
Debug.Log("HiB");
}
public void HandleClick()
{
gameController.AnswerButtonClick (AnswerData.isCorrect);
if (gameController.IsCorrected())
{
GetComponent<Button>().image.color = Color.green;
Debug.Log("im true");
StartCoroutine(ReturnButtonColor());
}
else
{
GetComponent<Button>().image.color = Color.red;
// gameController.IsCorrected().image.color = Color.green;
StartCoroutine(ReturnButtonColor());
}
}
谢谢
【问题讨论】:
-
您需要有一种方法来获取对正确答案按钮的引用,以便将其变为绿色。也许你可以向你的游戏控制器添加一个方法来返回正确的按钮,然后在你的 else 子句中调用它。从那里,你知道如何切换它的颜色。
标签: c# user-interface unity3d unity5