如何在Godot中从一个GDScript脚本导入类至另一个脚本?
在Godot中跨脚本复用自定义类
方法1:通过脚本引用访问
如果scriptA.gd是项目中的普通脚本,你可以在scriptB.gd里通过加载脚本的方式调用其中的Effect类:
# scriptB.gd # 预加载scriptA脚本(适合频繁使用的场景) const EFFECT_SCRIPT = preload("res://scriptA.gd") func _ready(): # 实例化Effect类 var attack_buff = EFFECT_SCRIPT.Effect.new("攻击增益", "atk", 20)
如果只是偶尔使用,也可以用load动态加载:
var effect_script = load("res://scriptA.gd") var defense_buff = effect_script.Effect.new("防御提升", "def", 15)
方法2:定义全局可访问类
在scriptA.gd的类定义前添加class_name关键字,让Effect成为全局类,无需加载脚本就能直接使用:
# scriptA.gd class_name Effect var name: String var stat: String var value func _init(name: String, stat: String, value) -> void: self.name = name self.stat = stat self.value = value
之后在scriptB.gd里直接实例化即可:
# scriptB.gd func _ready(): var hp_regen = Effect.new("生命回复", "hp", 50)
方法3:继承扩展类
如果需要在scriptB.gd中扩展Effect的功能,可以直接继承该脚本:
# scriptB.gd extends "res://scriptA.gd" # 添加自定义方法 func get_effect_description(): return "%s:提升%s属性%d点" % [name, stat, value]
这种方式适合需要基于原类扩展功能的场景。
内容的提问来源于stack exchange,提问作者Alexandr
相关产品推荐
相关产品推荐

