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

Godot引擎:如何根据字符串类名判断对象是否属于该类

在Godot中用字符串类名判断对象所属类

你原来的写法有问题——is关键字不能直接跟字符串类名,它要求的是具体的类型引用,不是字符串形式的类名。这里给你两种可行的解决方法:

方法1:精确匹配类名(不考虑继承)

用对象的is_class()方法,直接传入字符串类名就能判断,这个方法只会在对象的精确类名和传入的字符串完全一致时返回true:

extends Node2D

func _ready():
    var given_class_name = "KinematicBody2D"
    # 判断$Obj的精确类名是否匹配
    if $Obj.is_class(given_class_name):
        print("对象是KinematicBody2D类的实例")

方法2:考虑继承关系(子类也会匹配)

如果你的对象是目标类的子类实例,也希望判定为true,就需要先通过ClassDB.class_get()把字符串类名转成对应的类对象,再用is_instance_of()方法判断:

extends Node2D

func _ready():
    var given_class_name = "KinematicBody2D"
    # 先把字符串类名转为类对象
    var target_class = ClassDB.class_get(given_class_name)
    # 判断对象是否是该类或其子类的实例
    if $Obj.is_instance_of(target_class):
        print("对象是KinematicBody2D或其子类的实例")

注意:如果传入的字符串类名是不存在的类,ClassDB.class_get()会返回null,这时is_instance_of()会返回false,你可以根据需求加个判空逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:12:19