微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用拖放引用,脚本的移动位置导致“ Unity Text Object Reference未设置为对象的实例”

如何解决使用拖放引用,脚本的移动位置导致“ Unity Text Object Reference未设置为对象的实例”

这个简单的脚本在将它作为组件附加到Text对象并将该Text对象拖到Unity GUI中的检查器中时非常完美,该脚本是:Text object>脚本component>公共Text的字段。

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

public class displayReading : MonoBehavIoUr
{
    public Text textdisplay;

    void Start()
    {
        textdisplay.text = "hi";
    }
}

但是...

如果我将public Text textdisplaytextdisplay.text = "hi";放在一个控制数字面板上一堆按钮的脚本(该脚本附加到父面板)中,然后将Text对象拖到在Panel的检查器的“面板”>“脚本组件”>“公共Text”字段中,出现错误:“ Unity Text Object Reference未设置为对象的实例。” 即使脚本有效。换句话说,它确实将文本更改为显示“ hi”,但仍然给我一个错误

因此,脚本在两种情况下均有效,但在一种情况下,它给我一个错误。当脚本是独立的,附加到“文本”或“面板”上并且将Text对象拖放到独立脚本组件上时,我没有收到任何错误。当将这两行脚本添加到附加到Panel的较大脚本中并将Text对象拖放到Panel的脚本组件上时,我得到一个错误,尽管文本确实按期望显示

我尝试关闭Unity和Visual Studio并重新启动。我尝试过删除脚本组件和对象并将它们重新添加到组件的字段中。我仔细检查了我是否正在使用Text对象,而不是TextMeshPro对象。我还尝试将独立脚本附加到面板,然后将Text对象拖动到面板上。那没有错误。因此,要么将这些脚本行添加一个较大的脚本中,要么在脚本组件上还有许多其他对象似乎导致此错误的情况下进行拖放引用。

有什么想法吗?

如果您对较大的脚本感到好奇,这是开始。在较大的脚本中,没有提到文本或文本或对Text对象的任何其他引用,但我提到的那两行除外。是的,我确实记得拖放文本对象。以下是我的检查员的快照。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using TMPro;
using UnityEditorInternal;
using UnityEngine;
using UnityEngine.UI;

public class Numpad : MonoBehavIoUr
{
  
    string[] padnumbers = { "0","0","0"};
    string[] combinednum = new string[4];
    string[] displaynum = new string[4];
    bool[] positions = { false,false,false };
    int pos;

    public GameObject B1;
    public GameObject B2;
    public GameObject B3;
    public GameObject B4;
    public GameObject B5;
    public GameObject B6;
    public GameObject B7;
    public GameObject B8;
    public GameObject B9;
    public GameObject Bclear;
    public GameObject B0;
    public GameObject Bdot;
    public GameObject SaveButton;
    public GameObject ManInput;
    public Text textdisplay;

    void Start()
    {
        textdisplay.text = "hi";

        combinednum[0] = padnumbers[0];
        combinednum[1] = padnumbers[1];
        combinednum[2] = ".";
        combinednum[3] = padnumbers[2];
    }

...

Unity inspector window snapshot

解决方法

哦,我发现了问题。

答案:我已将脚本的另一个实例附加到直接父对象上方的另一个甚至更高的面板上,然后忘记了它。正是该脚本实例引发了错误,而该脚本的另一个实例正在根据需要修改文本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?