GMS2-为什么会出现此语法错误?

时间:2020-05-18 10:35:13

标签: gml game-maker-studio-2

我制作了一个库存系统(其他是投递系统),这里是提货代码

    // pickup

    found_in_inv = false;

    for(var i = 0; i < ds_list_size(global.inv); i++){
        if(global.inv[| i][| 0] == other.object_index){ // error line
            global.inv[| i][| 1]++;
            found_in_inv = true;
            break;
        }
    }

    if(found_in_inv){
        instance_destroy(other);
    }else{
        for(var i = 0; i < ds_list_size(global.inv); i++){
            if(global.inv[| i][| 0] == noone){
                global.inv[| i][| 0] = other.object_index;
                global.inv[| i][| 1] = 1;
                break;
                instance_destroy(other);
            }
        }
    }

我收到语法错误,其中“ [|”找到预期的“)”。我不知道该如何解决,请帮忙。

1 个答案:

答案 0 :(得分:2)

仅在> = 2.3版本中才支持链访问器(在您的情况下为a [i] [k]或a [| i] [| k])(在撰写本文时,is in beta)。 / p>

将第一个检索到的项分配到变量中以避开事实。
也许还趁机不要做超出您需要的内容。

    for(var i = 0; i < ds_list_size(global.inv); i++){
        var item = global.inv[| i];
        if(item[| 0] == other.object_index){ // error line
            item[| 1]++;
            found_in_inv = true;
            break;
        }
    }