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

启动Godot游戏时GDScript instantiate函数不存在错误求解决方法

解决Invalid call. Nonexistent function 'instantiate' in base 'GDScript'错误

错误原因

你用preload加载了GDScript脚本文件(res://coin.gd),但instantiate()是**PackedScene(场景)**专属的实例化方法,GDScript对象本身没有这个方法,所以触发报错。

解决方案(推荐):加载场景而非脚本

Godot中实例化节点的常规方式是预加载场景文件(通常是.tscn格式),而非直接加载脚本。假设你的金币逻辑写在coin.gd中,且该脚本挂载在coin.tscn场景里,修改代码如下:

extends Node2D

# 预加载金币场景文件,替换成你的实际场景路径
var coin_scene = preload("res://coin.tscn")

func _on_timer_timeout():
    var coinTemp = coin_scene.instantiate()   
    # 直接使用randi_range生成随机数,无需额外创建RandomNumberGenerator
    var genint = randi_range(50, 500)
    coinTemp.position = Vector2(genint, 560) 
    add_child(coinTemp)

备选方案(不推荐):通过脚本创建节点

如果确实需要从脚本直接创建节点,需先创建对应类型的节点实例,再绑定脚本(注意替换成coin.gd实际继承的父类,比如Sprite2D、Area2D等):

extends Node2D

var coin_script = preload("res://coin.gd")

func _on_timer_timeout():
    # 创建脚本对应的节点实例,这里假设coin.gd继承自Area2D,需替换为实际父类
    var coinTemp = Area2D.new()
    coinTemp.script = coin_script   
    var genint = randi_range(50, 500)
    coinTemp.position = Vector2(genint, 560) 
    add_child(coinTemp)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:33:13