Unity切换抛出NullReferenceException:对象引用未设置为对象的实例

时间:2016-06-21 02:12:47

标签: c# unity3d nullreferenceexception

在Unity中,我有一些简单的代码可以运行:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class Test : MonoBehaviour {

    public Toggle GridToggle;

    // Use this for initialization
    void Start () {
        GridToggle.isOn = true;
        print (GridToggle.isOn);
    }

}

正如我所说,这很好用,记录真实'到控制台。但是,我在这里有第二批代码,几乎完全相同,但由于某些奇怪的原因,它似乎不起作用:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;

public class GridManager : MonoBehaviour {

    public Sprite[] gridColors = new Sprite[0];
    public int defaultSprite = 0;

    public Toggle GridToggle;

    public SpriteRenderer spriteRenderer;

    // Use this for initialization
    void Start () {

        //Same exact thing!
        GridToggle.isOn = true;
        print (GridToggle.isOn);
        //Same exact thing!

        spriteRenderer = GetComponent<SpriteRenderer> ();
        spriteRenderer.sprite = gridColors [defaultSprite];
    }

    void Update () {
        spriteRenderer = GetComponent<SpriteRenderer> ();
        spriteRenderer.enabled = true;
     }
}

这样做很奇怪:它记录了真实的&#39;到了控制台,但同时,在显示GridToggle.isOn = true;的行上,它抛出:NullReferenceException:对象引用未设置为对象的实例。我想要第二个代码可以工作,但我无法弄清楚我做错了什么,以及它与第一个有什么不同。

1 个答案:

答案 0 :(得分:0)

您提供的第一个示例在我测试时会抛出相同的NullReferenceException。听起来你已经通过GUI将Toggle附加到Test的实例,而不是GridManager的实例。

检查场景GUI,其中GridManager附加到GameObject,并确保它在脚本详细信息中没有说Grid Toggle:None(Toggle)。如果确实如此,那就是你的问题。做任何事情,将Toggle对象分配给Test代码,将其分配给GridManager代码。

相关问题