【问题标题】:Unity toggle throws NullReferenceException: Object reference not set to an instance of an objectUnity切换抛出NullReferenceException:对象引用未设置为对象的实例
【发布时间】: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:对象引用未设置为对象的实例。我希望第二个代码能够工作,但我无法弄清楚我做错了什么,以及它与第一个代码有何不同。

【问题讨论】:

标签: c# unity3d nullreferenceexception


【解决方案1】:

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

检查已将 GridManager 附加到游戏对象的场景 GUI,并确保脚本详细信息中没有显示 Grid Toggle : None (Toggle)。如果是这样,那就是你的问题。执行您所做的任何操作,将 Toggle 对象分配给 Test 代码以将其分配给 GridManager 代码。

【讨论】:

  • 哎呀,我的错。 :( 祝你好运!如果我在其他人之前找到任何其他内容,我会发布。
  • 好的,我找到了问题所在。在第二个代码中,我认为它引用了层次结构中的 GameObject,但它引用了一个预制件,正如你所说,它没有在检查器中选择切换。由于它是一个预制件,我不得不使用 getComponenet 来访问切换。花了一段时间,但我意识到你的答案是正确的!对不起!
  • 我相信在抛出错误之前记录 true 的奇怪现象是引用脚本的 GameObject 在我认为我没有使用的预制件之前打印了它错误。不过,这很有趣。
猜你喜欢
  • 2014-07-21
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 2013-04-19
  • 2016-06-05
  • 1970-01-01
  • 2020-03-02
相关资源
最近更新 更多