C# 统一的未赋值变量

C# 统一的未赋值变量,c#,unity3d,C#,Unity3d,大约3小时前,我刚开始在YouTube上的Brackeys上学习Unity2D的“如何制作2D游戏”课程。我在Ubuntu 18.04上使用的是Unity 2018.4.1f1,因为我的版本不支持JS,所以我不得不使用C。但我在第三个视频中遇到了这个错误:GameSetup的变量mainCam尚未分配。这是我的C语言代码: GameSetup.cs 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类游戏设置:MonoBehavior

大约3小时前,我刚开始在YouTube上的Brackeys上学习Unity2D的“如何制作2D游戏”课程。我在Ubuntu 18.04上使用的是Unity 2018.4.1f1,因为我的版本不支持JS,所以我不得不使用C。但我在第三个视频中遇到了这个错误:GameSetup的变量mainCam尚未分配。这是我的C语言代码:

GameSetup.cs

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类游戏设置:MonoBehavior
{
公共摄像机;
公共墙:R2D顶墙、底墙、左墙、右墙;
公共转换播放器1、播放器2;
//在第一帧更新之前调用Start
void Start()
{
//topWall=GetComponent();
//mainCam=GetComponent();
//如果我取消对此的注释,将出现一个新的错误:没有“Camera”附加到“\u GM”游戏对象,但脚本正在尝试访问它。
}
//每帧调用一次更新
无效更新()
{
//将每面墙移动到其边缘位置
topWall.size=新矢量2(主摄像机屏幕到世界点(新矢量3(屏幕宽度*2.0f,0f)).x,1.0f);
topWall.offset=新矢量2(0f,主凸轮屏幕到世界点(新矢量3(0f,屏幕宽度,0f)).y+0.5f);
}
}
在Google的帮助下,我从第二个视频的脚本中添加了
rb2d.GetComponent()
,并防止了错误(视频中没有
Start()

PlayerControls.cs


使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类玩家控制:单一行为
{
公钥代码上下移动;
公共浮动速度=10;
private rigiidbody2d rb2d=新的rigiidbody2d();
//在第一帧更新之前调用Start
void Start()
{
rb2d=GetComponent();
}
//每帧调用一次更新
无效更新()
{
if(Input.GetKey(moveUp))
{
矢量3 v=rb2d.速度;
v、 y=速度;
rb2d.velocity=v;
//rb2d.velocity.y=速度;
}
else if(Input.GetKey(向下移动))
{
矢量3 v=rb2d.速度;
v、 y=速度*(-1);
rb2d.velocity=v;
}
其他的
{
矢量3 v=rb2d.速度;
v、 y=0;
rb2d.velocity=v;
}
}
}
如何修复GameSetup.cs中的错误?我完全按照视频中所说的做了,但只是将语言从JS更改为C#

或者将其赋值为空:

public Camera mainCam = null;
但在Unity3D编辑器中,很可能缺少将摄影机对象附加到该对象的功能。检查您的检查器,确保使用此脚本的任何对象(GameSetup.cs)都已将摄影机对象分配给其公共变量


应该是这样的。您必须将摄像头对象拖放到游戏对象上。

非常感谢,这也是我的一部分过错,我直到正确的部分才播放视频。。。