You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot运行C#脚本报top-level statements在C#7.3不可用如何解决

问题根源

这个报错由两个常见原因导致:

  • 函数代码没有写在C#类内部,触发了「顶级语句」语法检查
  • Godot 3.x默认绑定的C#语言版本为7.3,不支持高版本语法特性
解决步骤

第一步:排查代码结构

你写的OnPlayerBodyEntered方法必须放在继承Godot节点类的类作用域内,不能直接放在C#文件的最外层,正确结构参考:

using Godot;
using System;

public class Player : KinematicBody2D // 此处类名要和你节点绑定的脚本名一致
{
    // 其他类成员、生命周期函数写在这里

    // 信号回调函数要放在类内部
    public void OnPlayerBodyEntered(PhysicsBody2D body)
    {
        Hide(); // 玩家被击中后隐藏
        EmitSignal("Hit");
        GetNode<CollisionShape2D>("CollisionShape2D").SetDeferred("disabled", true);
    }
}

第二步:手动升级项目C#语言版本

如果确认代码结构无误,按以下操作修改配置:

  1. 打开Godot项目根目录,找到后缀为.csproj的项目文件,用任意文本编辑器打开
  2. 找到文件中的<PropertyGroup>节点,在节点内添加一行配置:
<LangVersion>10.0</LangVersion>

修改后完整节点示例:

<PropertyGroup>
  <TargetFramework>net6.0</TargetFramework>
  <LangVersion>10.0</LangVersion>
</PropertyGroup>
  1. 保存文件后回到Godot编辑器,点击顶部菜单栏「项目」→「工具」→「C#」→「生成项目」
  2. 重启Godot编辑器后再运行项目即可解决报错
补充说明

如果你使用的是Godot 4.x版本,默认已经兼容C# 10+版本,无需额外修改配置,优先排查代码结构问题即可。

内容的提问来源于stack exchange,提问作者Lordimass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:15:04