【问题标题】:Unity c# how to compare text from button array with another int array?Unity c#如何将按钮数组中的文本与另一个int数组进行比较?
【发布时间】:2019-08-03 19:47:50
【问题描述】:

我有两个数组。一个 ui 按钮 - 带有子 TextMeshProUGUI 和另一个 int 数组。 当所有按钮都分配有新值时,我想将按钮(文本)数组的每个元素与 int 数组进行比较。

userInputs[] 持有按钮以从给定的 8 个选项中获取用户的输入以回答问题。 correctAnswers[] 包含所有正确答案。

我能够检查是否所有按钮都分配了值。然后我正在检查答案。在这里,如果正确,我希望按钮图像变为绿色,如果不正确,则变为红色。 无法理解如何比较?请帮忙

public void CheckAnswers()
{
    int i = 0;
    int j = 0;
    // for (i = 0; i < userInputs.Length; i++)
    {

        foreach (Button userInput in userInputs)
            if (userInputs[i].GetComponentInChildren<TextMeshProUGUI>().text 
  == correctAnswers[j].ToString())
            {
                userInput.GetComponent<Image>().color = Color.green;
            }
            else
            {
                {
                    userInput.GetComponent<Image>().color = Color.red;
                }
            }
    }

【问题讨论】:

  • 您好,您已在此处添加了整个代码,您能否进行编辑并仅显示必要的 sn-ps。这有点令人困惑,而且您的代码中也找不到userAnswers
  • @sujith 你能看看public bool CheckAnswers()好吗
  • 我放了整个代码只是为了展示我的工作。抱歉输入错误userInputs我改了
  • 您知道如何设置按钮文本,究竟是什么让您在检查按钮是否匹配答案时感到困惑
  • @BugFinder 我想等到所有 4 个按钮都从 8 个给定选项中分配了新值。然后我想将它们与正确答案进行比较。检查时,我希望正确回答的按钮变为绿色,否则变为红色。

标签: c# arrays user-interface unity3d button


【解决方案1】:

您需要更改 CheckAnswers() 中的循环。您正在为userInputs 使用foreach 循环,并且仍然使用int 递增它应该是这样的。

        foreach (Button userInput in userInputs)
    {
 for (i = 0; i < userInputs.Length; i++)
            {
                    if (userInput.GetComponentInChildren<TextMeshProUGUI>().text 
        == correctAnswers[i].ToString())
                    {
                        userInput.GetComponent<Image>().color = Color.green;
                    }
                    else
                    {
                        {
                            userInput.GetComponent<Image>().color = Color.red;
                        }
                    }
    }
        }

小心,因为如果您的 userInputs 小于您的正确答案数组,您可能会收到 Argument out of range exception 错误。希望对您有所帮助。

【讨论】:

  • 我已经实现了上面的代码。但它只改变了数组的最后一个元素的值。即使答案正确,所有按钮都会变红。
  • 即使我只回答一个问题,它也会改变所有答案按钮的颜色
  • 请给我看看你的 UI 元素。让我明白你在做什么。
  • 确定在我的问题中添加了图片。请检查。谢谢
  • 谢谢。根据图片,您有 8 个带有可能答案的按钮,它们会根据用户的输入将颜色变为红色或绿色。正确的?除此之外,“?”会发生什么?按钮?它显示什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
相关资源
最近更新 更多