如何修复Godot GDScript中‘类文件中不允许使用自身类名’错误?
解决Godot GDScript“类文件中不允许使用自身类名”错误
错误原因
在Player类的全局作用域里直接用Player.new()创建实例时,类还没完成定义,Godot禁止这种在类自身未加载完成时引用类名实例化的操作,所以触发了错误。
可行解决方法
延迟实例化到生命周期函数:把创建实例的代码放到
_ready()函数中,这时类已经完全加载完成,可以正常引用类名:class_name Player var player: Player # 先声明变量类型 var player_seed = "" func _ready(): player = Player.new() # 在_ready中完成实例化 func _on_Button_pressed(): var new_seed = int($ColorRect/LineEdit.text) player.player_seed = new_seed用
self替代类名实例化:如果是要创建当前类的实例,也可以用self.new()代替Player.new(),同样建议放到_ready()中执行:class_name Player var player: Player var player_seed = "" func _ready(): player = self.new() func _on_Button_pressed(): var new_seed = int($ColorRect/LineEdit.text) player.player_seed = new_seed无需额外实例化的优化方案:如果你的需求只是修改当前对象的
player_seed,根本不需要创建新的Player实例,直接修改当前对象的属性即可:class_name Player var player_seed = "" func _on_Button_pressed(): var new_seed = int($ColorRect/LineEdit.text) player_seed = new_seed # 等价于 self.player_seed = new_seed
内容的提问来源于stack exchange,提问作者Inchy
相关产品推荐
相关产品推荐

