特性“顶级语句”在C# 7.3中不可用。请使用语言版本9.0或更高版本。Godot问题。

4

我正在尝试学习如何使用Godot,因为我发现它比Unity更容易学习,一直在按照他们官方文档页面上的教程进行。我已经成功地到达了“准备碰撞”部分,并创建了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非常新手。感谢任何帮助提供的帮助。

2个回答

6

我不能完全确定这段代码是否会产生顶层语句错误。通常,顶层语句错误来自于 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>

3

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

我(...)已经创建了Hit信号,但是当我将节点链接在一起时,它创建了函数,并且我编写了它所说要放入其中的代码。

问题在于它创建在了错误的地方。Godot会在文件末尾添加处理程序方法,这是不正确的。它应该是与文件同名的类中的一个方法。将该方法移动到那里。


谢谢,那也是个问题,但不是我发布的错误,我也得解决它,是的,我注意到它集成得不是很好,有点痛苦,再次感谢您的帮助。 - Lordimass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接