功能 'top-level statements' 在 C# 7.3 中不可用。请使用 9.0 或更高版本的语言。戈多问题

Feature 'top-level statements' is not available in C# 7.3. Please use language version 9.0 or greater. Godot Question

我正在尝试学习如何使用 Godot,因为我发现它比 Unity 更容易学习,并且一直在关注 a tutorial on their official documentation page,我已经设法达到了 'Preparing for Collisions' 部分,并创建了 Hit 信号,但是,当我将节点链接在一起时,它创建了函数,并且我编写了它所说的代码放入其中:

public void OnPlayerBodyEntered(PhysicsBody2D body)
{
    Hide(); // Player disappears after being hit.
    EmitSignal("Hit");
    GetNode<CollisionShape2D>("CollisionShape2D").SetDeferred("disabled", true);
}

但是当我 运行 它时,它给出了这个错误:

Feature 'top-level statements' is not available in C# 7.3. Please use language version 9.0 or greater.

我认为这意味着我必须更新 C#,我认为这不是什么大问题,我尝试通过 dotnet-sdk 更新它,但我不太确定是什么它是或者它是如何工作的,并且在 Godot 中找不到任何其他更新它的方法。如果这是一个愚蠢的问题,我深表歉意,我是 Godot 的新手。在此先感谢您的帮助。

我不完全确定这是否是产生顶级语句错误的代码片段。顶级语句错误通常来自,通常是 Program.cs,或包含 Main 方法的代码文件。

C# 9 引入了顶级语句: MSDN - Top-level statements

为了在您的项目中启用 C# 9.0,您需要编辑 .csproj 文件并添加以下内容:

<PropertyGroup>
   <LangVersion>9.0</LangVersion>
</PropertyGroup>

或者,您可以使用以下配置来定位最新的 C# 版本,目前 10.0:

<PropertyGroup>
   <LangVersion>latest</LangVersion>
</PropertyGroup>

虽然 Godot 完全支持 C# 语言,但 IDE 的集成不是最好的(好吧,集成不好)。

I (...) have created the Hit signal, however, when I linked the nodes together, it created the function, and I wrote the code it said to put into it

问题是它在错误的地方创建了它。 Godot 在文件末尾添加处理程序方法。这是不正确的。它应该是 class 中与文件共享名称的方法。把方法移到那里。