此问题在此处已有答案:
What is a NullReferenceException, and how do I fix it?(27个答案)
昨天关门了。
我正在学习使用Unity,我目前正在做“个人3D画廊项目”,这里是链接,如果你想看看它:https://learn.unity.com/project/create-a-personal-3d-gallery-project-with-unity?uv=2019.4
然而,我并没有在我的画廊里展示艺术作品,而是展示行星,我的目标是当玩家接近其中一个行星时,弹出一个关于该行星的信息文本。为了实现这一点,我正在使用Unity网站中提供的接近度脚本,并进行了一些更改。一切似乎都工作正常,但当我接近行星的文字没有显示,我不断收到这个错误:
空引用异常:对象引用未设置为对象的示例
Proximity.Start()(位于资产/脚本/Proximity.cs:32)
显然问题出在第32行,但我不知道是什么原因造成的。我将附上图片,以便更好地了解问题和我的代码。
我真的很感激你的帮助,因为这是一个最后的项目,谢谢你这么多提前。
以下是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Proximity : MonoBehaviour
{
public string newTitle;
public string newNumber;
public string newInfo;
private Transform other;
private Text myTitle;
private Text myNumber;
private Text myInfo;
private float dist;
private GameObject player;
private GameObject message1;
private GameObject message2;
private GameObject message3;
private bool check;
// Start is called before the first frame update
void Start()
{
player = GameObject.FindWithTag("Player");
other = player.GetComponent<Transform>();
message1 = GameObject.FindWithTag("PlanetTitle");
message2 = GameObject.FindWithTag("PlanetNumber");
message3 = GameObject.FindWithTag("PlanetInfo");
myTitle = message1.GetComponent<Text>();
myTitle.text = "";
myNumber = message2.GetComponent<Text>();
myNumber.text = "";
myInfo = message3.GetComponent<Text>();
myInfo.text = "";
check = false;
}
// Update is called once per frame
void Update()
{
if (other)
{
dist = Vector3.Distance(transform.position, other.position);
print("Distance to player: " + dist);
if (dist < 4)
{
myTitle.text = newTitle;
myNumber.text = newNumber;
myInfo.text = newInfo;
check = true;
}
if (dist > 4 && check == true)
{
Start();
}
}
}
}
这就是我要做的
但这就是当我接近行星(或者在这种情况下是月球)时它的样子
这位是我的检查员,以防问题可能在那里
我多次检查我的代码,并将其与原始代码进行比较,我认为我做了所有必要的修改,但显然有一些错误。
1条答案
按热度按时间o7jaxewo1#
在设置属性文本之前,myTitle不会初始化。请在Awake中分配所需的组件来初始化它。