在Unity中捕捉异常

本文关键字:异常 Unity | 更新日期: 2023-09-27 17:53:08

我正在编写一个非常简单的脚本,它利用带有InputField和按钮的画布。当玩家按下按钮时,脚本检查输入字段的文本。我遇到的问题是,如果没有输入任何内容,Unity将退出UnassignedReferenceException。

我试着捕捉这个异常,但我一定是做了一些可怕的错误:

public class Quiz : MonoBehaviour {
    public GameObject quizPanel;
    public GameObject input;
    public void checkAnswer(){
        Text answer = (input.GetComponent<Text>()) as Text;
        try {
            if (answer.text == "George Washington") {
                Debug.Log("True");
            }
        }catch (UnassignedReferenceException)
        {
            Debug.Log ("Wrong answer");
        }
    }
}

在Unity中捕捉异常

1)我把你所有的代码放入一个try-catch

2)确保你记录了你的异常。

public class Quiz : MonoBehaviour {
    public GameObject quizPanel;
    public GameObject input;
    public void checkAnswer(){
        try {
        Text answer = (input.GetComponent<Text>()) as Text;

            if (answer.text == "George Washington") {
                Debug.Log("True");
            }
        }catch (UnassignedReferenceException ex)
        {
            Debug.Log ("Wrong answer");
            Log.Item(ex); 
        }
    }
}

我有一些很好的理由相信您的input变量在某种程度上无效。所以我建议你让你的try/catch封装所有的代码:

public void checkAnswer(){
    try {
        Text answer = (input.GetComponent<Text>()) as Text;
        if (answer.text == "George Washington") {
            Debug.Log("True");
        }
    }catch (UnassignedReferenceException)
    {
        Debug.Log ("Wrong answer");
    }
}