对象引用未设置为对象的实例错误,求解惑

在unity里我遇到一个问题报错但是好像可以运行,但是我害怕后面的代码会因此运行不起来,求帮忙看看
NullReferenceException: Object reference not set to an instance of an object(对象引用未设置为对象的实例)
DebugScreen.Update () (at Assets/Script/DebugScreen.cs:38)
脚本是这样的:

public class DebugScreen : MonoBehaviour
{
    World world;
    Text text;

    float frameRate;
    float timer;

    int halfWorldSizeInVoxels;
    int halfWorldSizeInChunks;

    void Start()
    {

        world = GameObject.Find("World").GetComponent<World>();
        text = GetComponent<Text>();

        halfWorldSizeInVoxels = VoxelData.WorldSizeInVoxels / 2;
        halfWorldSizeInChunks = VoxelData.WorldSizeInChunks / 2;

    }

    void Update()
    {

        string debugText = "b3agz' Code a Game Like Minecraft in Unity";
        debugText += "\n";
        debugText += frameRate + " fps";
        debugText += "\n\n";
        debugText += "XYZ: " + (Mathf.FloorToInt(world.player.transform.position.x) - halfWorldSizeInVoxels) + " / " + Mathf.FloorToInt(world.player.transform.position.y) + " / " + (Mathf.FloorToInt(world.player.transform.position.z) - halfWorldSizeInVoxels);
        debugText += "\n";
        debugText += "Chunk: " + (world.playerChunkCoord.x - halfWorldSizeInChunks) + " / " + (world.playerChunkCoord.z - halfWorldSizeInChunks);



        text.text = debugText;

        if (timer > 1f)
        {

            frameRate = (int)(1f / Time.unscaledDeltaTime);
            timer = 0;

        }
        else
            timer += Time.deltaTime;

    }
}

以下内容部分参考ChatGPT模型:


这个错误通常是因为尝试使用一个未被实例化的对象。在你的代码中,可能是因为无法找到名为"World"的游戏对象导致的。你可以添加一些调试语句来确定是哪个对象未被实例化。例如,在Start()函数中,你可以添加以下代码:

GameObject worldObject = GameObject.Find("World");
if (worldObject == null)
{
    Debug.Log("World object not found!");
}
else
{
    world = worldObject.GetComponent<World>();
}

这将检查是否找到了名为"World"的游戏对象。如果没有找到,它将打印一条消息到控制台,以便你知道是哪个对象未被实例化。如果找到了对象,它将执行你原来的代码来获取组件。

另外,你也可以在Update()函数中添加类似的调试语句,以确保所有需要的对象都已被实例化。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快

很明显是没有这个对象或者设置错误了

在update里要先判断world到底赋值了没有
update是一直在执行的,不管你有没有先调用start,所以world可能还没有赋值
加个if( world!=null)