大家好我正在尝试编写一个包含多个级别的游戏场景。在该场景中,用户将尝试记住屏幕上的文字,然后尝试通过单击按钮选择正确的文字。 我创建了多个按钮作为GameObject(出于特定原因)
所以这是怎么回事
public GameObject[] buttons = new GameObject[7];
这些是我的按钮。我在画布上创建它们作为按钮,但在脚本中我将它们视为游戏对象。
void wordsToButton()
{
for(int i = 0; i < wordsTxt.Length; i++)
{
buttons[i].GetComponentInChildren<Text>().text = wordsTxt[i].GetComponent<Text>().text;
buttons[i].transform.position = new Vector2(Random.Range(30, Screen.width - 20), Random.Range(30, Screen.height - 50));
}
for(int i=0; i <differentWords.Length; i++)
{
buttons[i+5].GetComponentInChildren<Text>().text = differentWords[i].GetComponent<Text>().text;
buttons[i+5].transform.position = new Vector2(Random.Range(30, Screen.width - 20), Random.Range(30, Screen.height - 50));
}
}
在这里,我正在尝试编辑按钮的文本并给它一个随机的位置。另外我也说了一些错误的单词。它工作正常。
public void buttonListeners()
{
for(int i=0; i < buttons.Length-1; i++)
{
buttons[i].GetComponent<Button>().onClick.AddListener(() =>
{
int n = i;
if(buttons[n].GetComponent<Text>().text == differentWords[0].GetComponent<Text>().text || buttons[n].GetComponent<Text>().text == differentWords[1].GetComponent<Text>().text)
{
correctAnswers--;
}
else
{
correctAnswers++;
}
});
}
}
在这里,我给了听众按钮。当用户点击按钮时,它会检查答案是否正确。
public void level2()
{
if (levels[2].activeSelf == true)
{
differentWords[0].SetActive(false);
differentWords[1].SetActive(false);
levels[0].SetActive(false);
levels[1].SetActive(false);
levels[3].SetActive(false);
timer1 = 10;
InvokeRepeating("countDown1", 0.01f , 1);
}
wordsToButton();
buttonListeners();
}
这是我谈到的级别。所以,当我点击屏幕上的按钮时,它给了我这个错误:
NullReferenceException:未将对象引用设置为对象的实例 Word + c__AnonStorey0。&lt;&gt; m__0()(在资产/类别/ Word.cs:184)
第184行是:
if(buttons[n].GetComponent<Text>().text == differentWords[0].GetComponent<Text>().text || buttons[n].GetComponent<Text>().text == differentWords[1].GetComponent<Text>().text)
我该怎么办?我知道我正在尝试达到空值。但实际上它不是空的,到目前为止我的代码工作得很好,我可以看到按钮的文本,所有这些都是正确的但是当我点击一个按钮时,它给了我这个错误。
编辑:我理解为什么它会给我带来错误。想要帮助一些人。因为我试图获得一个Button的Text组件。这是null
。我用
if(buttons[n].GetComponentInChildren<Text>().text == differentWords[0].GetComponent<Text>().text || buttons[n].GetComponentInChildren<Text>().text == differentWords[1].GetComponent<Text>().text)