【发布时间】:2016-10-22 10:00:45
【问题描述】:
在 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;
}
}
这很奇怪:它将“true”记录到控制台,但同时,在GridToggle.isOn = true; 的行上,它抛出:NullReferenceException:对象引用未设置为对象的实例。我希望第二个代码能够工作,但我无法弄清楚我做错了什么,以及它与第一个代码有何不同。
【问题讨论】:
-
这是一个重复的问题,@Systemagical 回答正确。
-
日志不是在抛出异常的那一行之后吗?它如何同时记录“true”并在上一行抛出异常?
标签: c# unity3d nullreferenceexception