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

如何在GML中一次性初始化整个数组?求对应实现示例

如何在GML中一次性初始化二维数组

嘿,完全懂你想要的那种清爽的数组初始化方式!在GML里确实能实现类似C语言那样的二维数组一次性赋值,不过得看你用的GameMaker版本,我给你掰扯清楚:

GameMaker Studio 2.3及以上版本(推荐)

2.3版本之后GML支持了更灵活的数组字面量语法,完全可以像你期望的那样直接嵌套初始化,写法几乎和你举的C语言例子一致:

// 局部变量的话加var,实例变量直接去掉var就行
var a = [[0, 1, 0], [0, 1, 1], [2, 1, 0]];

就这么简单!而且这个方法支持任意维度的数组嵌套,比如三维数组也可以这么写[[[1,2],[3,4]],[[5,6],[7,8]]],非常省心。

旧版本GameMaker(2.3之前)

如果还在使用2.3之前的老版本,嵌套数组字面量不被支持,那只能退而求其次,先创建外层数组,再逐个初始化内层:

// 先创建长度为3的外层数组
var a = array_create(3);
// 给每个外层元素赋值一维数组
a[0] = [0, 1, 0];
a[1] = [0, 1, 1];
a[2] = [2, 1, 0];

要是碰到更老的版本(连一维数组字面量都不支持),那只能手动逐个元素赋值了:

var a = array_create(3);
// 初始化第一个子数组
a[0] = array_create(3);
a[0][0] = 0;
a[0][1] = 1;
a[0][2] = 0;
// 初始化第二个子数组
a[1] = array_create(3);
a[1][0] = 0;
a[1][1] = 1;
a[1][2] = 1;
// 初始化第三个子数组
a[2] = array_create(3);
a[2][0] = 2;
a[2][1] = 1;
a[2][2] = 0;

不过说实话,现在大部分人都在用2.3+版本了,第一种方法是最便捷的,和你想要的形式几乎一模一样,只是GML是动态类型语言,不用提前声明int类型~

内容的提问来源于stack exchange,提问作者Josef Buchko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:29:20