Godot 4.4.1 C#重写_Ready()函数报错‘no suitable method found to override’求助
解决Godot C#中“no suitable method found to override”错误(_Ready()方法相关)
错误原因
你的Box类没有继承任何Godot节点基类(比如Node、Node3D、MeshInstance3D等)。_Ready()是Godot节点类提供的虚方法,只有当你的类继承了这类基类时,才能用override关键字重写它。哪怕你注释掉_Ready()的函数体,只要保留override关键字,编译器找不到对应的基类方法,就会触发这个错误。
解决方法
- 让
Box类继承一个符合你需求的Godot节点类。比如如果这个类要作为3D场景中的节点使用,最基础的可以继承Node3D;如果你的Box本身是网格实例,也可以直接继承MeshInstance3D。 - 调整类的声明,添加继承关系。
- 如果不需要
_Ready()方法,可以直接删除带override的该函数;如果需要保留,继承基类后即可正常重写。
修正后的代码示例
using Godot; using System; // 这里继承Node3D,你可以根据实际需求换成其他节点类 public class Box : Node3D { public enum BoxType { //HURT_BOX, //BLOCK_BOX } public bool Enabled { get; set; } public int Damage { get; set; } public Keyframe[] Keyframes { get; set; } private MeshInstance3D _mesh; private Fighter Fighter; // 现在继承了Node3D,就可以正常override _Ready()了 public override void _Ready() {} }
内容的提问来源于stack exchange,提问作者jacobzacarias
相关产品推荐
相关产品推荐

