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

Godot 4基于网格物品放置报错:Invalid get index '2' (on base: 'Array')

Godot 4中解决"Invalid get index '2' (on base: 'Array')"错误的方案

你遇到的数组索引错误,核心原因是访问了超出数组范围的索引,结合代码来看,主要有以下问题及修复方法:

1. 代码缩进错误导致逻辑异常

在_input函数里,var numY = multiY*tile_size一行有多余缩进,会导致变量作用域混乱,先修正缩进格式。

2. 鼠标坐标转换可能超出网格边界

你的网格大小是160x160,所以x、y的有效索引范围是0到159。但通过鼠标坐标计算出的multiX或multiY可能超出这个范围(比如点击画面边缘外区域),直接访问grid[multiX][multiY]就会触发索引错误。

用clamp函数限制坐标范围,确保索引始终在有效区间内:

var multiX = clamp(int(round(mouse_pos.x)/tile_size), 0, grid_size.x - 1)
var multiY = clamp(int(round(mouse_pos.y)/tile_size), 0, grid_size.y - 1)

3. 网格尺寸类型优化

把grid_size从Vector2改为Vector2i,避免后续整数转换的潜在问题:

var grid_size = Vector2i(160,160)

修正后的完整代码

extends Node2D

@onready var camp_fire = preload("res://src/Scenes/camp_fire.tscn")
var tile_size = 16

enum {OBSTACTLE, COLLECTABLE, RESOURCE}
var grid_size = Vector2i(160,160)
var grid = []


func _ready():
    for x in range(grid_size.x):
        grid.append([])
        for y in range(grid_size.y):
            grid[x].append(null)
    var positions = []
    for i in range(50):
        var xcoor = randi() % grid_size.x
        var ycoor = randi() % grid_size.y
        var grid_pos = Vector2i(xcoor, ycoor)
        if grid_pos not in positions:
            positions.append(grid_pos)

func _input(event):
    if event.is_action_pressed("LeftClick"):
        var mouse_pos = get_global_mouse_position()
        var multiX = clamp(int(round(mouse_pos.x)/tile_size), 0, grid_size.x - 1)
        var numX = multiX * tile_size
        var multiY = clamp(int(round(mouse_pos.y)/tile_size), 0, grid_size.y - 1)
        var numY = multiY * tile_size
        var new_pos = Vector2(multiX, multiY)
        var new_camp_fire = camp_fire.instantiate()
        new_camp_fire.set_position(tile_size * new_pos)
        grid[multiX][multiY] = OBSTACTLE
        get_tree().root.get_node("World").get_node("PlayerBuildings").add_child(new_camp_fire)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:32:38