gpt4 book ai didi

c# - Unity中的对象引用问题

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:52 25 4
gpt4 key购买 nike

我正在关注 a tutorial series .

我遇到了一个问题。我明白错误信息是什么:

Object reference not set to an instance of an object

意思是,但我不确定为什么会出现此消息。我不确定为什么它不能引用它。我对 Unity 很陌生。

我还在 documents/UnityProjects/PongTutorial 中创建了我的项目, 其中PongTutorial是这个项目的名称。

我为我的 Unity 项目创建了一个文件夹,以便将它们放在一起。在名为 UnityProjects 的文件夹中创建我的 Unity 项目会不会有问题?而不是在 My Documents 中创建每个项目文件夹?

我创建了一个 gameManager并附上一个名为 GameSetup 的脚本,此脚本中的代码是:

using UnityEngine;
using System.Collections;

public class GameSetup : MonoBehaviour
{
Camera mainCam;
BoxCollider2D topWall, bottomWall, leftWall, rightWall;
Transform player1, player2;

// Use this for initialization
void Start ()
{
}

// Update is called once per frame
void Update ()
{
topWall.size = new Vector2(mainCam.ScreenToWorldPoint(new Vector3(Screen.width * 2f, 0f, 0f)).x, 1f);
topWall.center = new Vector2(0f, mainCam.ScreenToWorldPoint(new Vector3(0f, Screen.height, 0f)).y + 0.5f);
}
}

我已经清理、 build 和重建Assembly-CSharp在此脚本的 MonoDevelop 中,以及 PongTutorial在 MonoDevelop 中,我也收到关于 mainCam 的警告和所有 BoxCollider2D 类型的变量.

这些警告说它们从未被分配给,所以会有一个空值,这是真的。但是,我得到了 object reference not set to an instance of an object对于 topWall.sizetopWall.center行。

我刚刚尝试创建新对象。例如,在 Start我有mainCam = new Camera() ,但这似乎不起作用。在视频中,在我的例子中,变量在 GM 或 GameManager 的检查器中可见。然而,这对我来说并非如此。

最佳答案

您首先需要公开您的变量,否则它们将不会显示在检查器中:

public class GameSetup : MonoBehaviour {

public Camera mainCam;
public BoxCollider2D topWall, bottomWall, leftWall, rightWall;
public Transform player1, player2;

// rest of your code...

}

然后将一些游戏对象(附有适当的组件)拖到检查器的新字段中。这应该修复“对象引用未设置为对象的实例”错误消息。此错误消息基本上意味着您正在尝试对未设置值的变量进行操作。

关于c# - Unity中的对象引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com