我正在尝试更改另一个类中的文本字段的值但我不断收到错误
对象引用未设置为对象的实例
第一堂课:
using UnityEngine;
using System.Collections;
public class Class1 : MonoBehaviour {
Class2 class2;
private void Start()
{
class2 = new Class2();
class2.setText();
}
}
第二课:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Class2 : MonoBehaviour {
public Text txt;
public void setText()
{
txt.text = "Sample text";
}
}
问题是我不知道如何在方法中使'txt'可见,就像函数忽略它在第二类中被声明一样。
以下是Class2脚本组件的编辑器属性:
答案 0 :(得分:0)
您收到此错误,因为在您的代码中,您从未向Class2实例分配Text GameObject,除此之外,您不应该像这样实例化MonoBehaviours(请参阅Serlite的评论)。
答案 1 :(得分:0)
这里的主要问题是您尝试使用Class2
来获取对现有GameObject的引用,但您正在使用class2 = new Class2()
来获取它。这不会为您提供所需的引用,并且new
关键字与MonoBehaviour
类一起使用几乎总会导致令人费解的错误,因为这不是它们被设计为实例化的方式。
在这种情况下,您甚至不想使用Class2
实例化对象 - 场景中已有一个对象!您似乎已经知道如何在Unity编辑器中将引用拖动到公共字段 - 只需将您的class2
字段公开,然后以相同的方式将“GameObjectText”对象拖到它上面:
public class Class1 : MonoBehaviour {
public Class2 class2; // Drag onto this field in the editor
private void Start()
{
class2.setText();
}
}
希望这有帮助!如果您有任何问题,请告诉我。