Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity C#:Camera.main返回空值?_C#_Ios_Macos_Ipad_Unity3d - Fatal编程技术网

Unity C#:Camera.main返回空值?

Unity C#:Camera.main返回空值?,c#,ios,macos,ipad,unity3d,C#,Ios,Macos,Ipad,Unity3d,有一个免费的C#代码示例,用于在Unity 3D中将对象移动到鼠标单击位置,如下所示: public GameObject cube; Vector3 targetPosition; void Start () { targetPosition = transform.position; } void Update(){ if (Input.GetMouseButtonDown(0)){ Ray ray = Camera.main.ScreenPointTo

有一个免费的C#代码示例,用于在Unity 3D中将对象移动到鼠标单击位置,如下所示:

public GameObject cube;
Vector3 targetPosition;

void Start () {

    targetPosition = transform.position;
}
void Update(){

    if (Input.GetMouseButtonDown(0)){
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit)){
            targetPosition = hit.point;
            cube.transform.position = targetPosition;
        }
    }
}
==============

问题在于,在运行时,Unity会在以下行生成错误:

Ray-Ray=Camera.main.screenpointoray(Input.mousePosition)

错误消息为:NullReferenceException:对象引用未设置为对象的实例

根据某人的建议,我刚刚在上面的示例代码中添加了一些调试语句,发现“Camera.main”为空。因此,这就是Unity生成上述错误消息的主要原因。:-)

请注意,整个游戏项目我只有一个摄像头。

这是我的“主摄像头”的拍摄图像,Unity已经自动启用并标记为“主摄像头”。但是,这也不能解决问题


最终更新:

我刚刚发现stackoverflow用户“程序员””已经在以下位置发布了一个极好的答案:

这个答案解决了我在使用他的代码“GameObject.Find(“NameOfCameraGameObject”).GetComponent();”时遇到的问题

所以,我同意我上面的问题有点重复。然而,当我问我是否应该删除我的问题时,用户“程序员”建议我可以保留此问题,因为将来其他人可能仍可以查看此问题。(同样,我已经通过上面的用户“程序员”发布了正确答案的链接)

我的结论:奇怪的是,即使Unity自动启用标记“MainCamera”,代码仍然认为“Camera.Main”为空。因此,我必须使用用户“程序员”编写的代码来解决这个问题

非常感谢用户“程序员””和其他优秀的stackoverflow用户帮助我解决这个问题。:-)

将您的相机标记为“Main camera”

不,您已将游戏对象命名为主摄像头。将游戏对象标记为主摄像头(在名称下方,当前为玩家)


这是一个带有一些默认标记的下拉菜单,主摄像机就是其中之一。

您有带主摄像机标记的摄像机吗?只需添加
Debug.Log(Camera.Main==null)
在使用它之前,检查结果您可以通过指定一个
摄像机
来解决此问题,并确保您只有一个带有该标记的对象。如果没有标记,则将其命名为
主摄像机
。。。但是它的标签是
Player
,正如你从我的附加图像中看到的,相机已经被标记为“主相机”,并且它仍然崩溃。整个游戏项目我只有一个摄像头。我应该改为“Camera Main”吗?奇怪的是,我有两个脚本,一个正在工作,第二个返回null,这让meLet很困惑,我试着按照你的建议去做。。。谢谢。刚刚编辑->这是一个下拉菜单,请看我问题中新附加的图片。在图像的顶部,您可以看到标签是“MainCamera”,这是Unity自动完成的。但是,这并不能解决问题。它仍然在崩溃。。。