Godot中自定义资源无法作为导出变量默认值显示的问题
自定义资源作为导出变量默认值不显示的解决方法
你当前的写法问题在于:直接用CUSTOM_RESOURCE.new()动态创建实例作为导出变量的默认值,Godot编辑器不会将这个临时实例序列化到场景中,因此检查器里无法显示默认资源。
解决方法有两种,推荐第一种:
方法一:使用预加载的资源文件作为默认值
- 在编辑器中创建一个CUSTOM_RESOURCE格式的资源文件:右键文件系统 → 新建资源 → 找到
CUSTOM_RESOURCE并创建,保存为your_custom_res.tres(或.res)。 - 在脚本中预加载该资源作为默认值:
extends Node2D export(Resource) var custom_res = preload("res://your_custom_res.tres")
这样编辑器就能识别到这个预加载的资源引用,检查器里会正常显示默认值,场景实例化时也会自动加载该资源。
方法二:Tool脚本动态初始化(不推荐)
如果不想单独创建资源文件,可以用tool标记脚本,在编辑器阶段初始化资源:
tool extends Node2D export(Resource) var custom_res func _init(): if not custom_res: custom_res = CUSTOM_RESOURCE.new()
但这种方法要注意tool脚本会在编辑器中运行,可能带来额外的性能或逻辑问题,仅适合简单场景。
如果是Godot 4.x版本,语法调整为@export即可:
extends Node2D @export var custom_res: CUSTOM_RESOURCE = preload("res://your_custom_res.tres")
内容的提问来源于stack exchange,提问作者cak3_lover
相关产品推荐
相关产品推荐

