关于变量数组核心
相关插件
核心插件:
◆Drill_CoreOfNumberArray 系统 - 变量数组核心
类似插件:
◆Drill_CoreOfString 系统 - 字符串核心
这类插件用于扩展可以用的数据类型,用法和 变量、开关相似;
可以通过 脚本调用,也可以通过 插件指令调用。
(但到后期,还是建议大家学习一下脚本,底层知识了解越多,设计思路就越明朗)
该文档可以与文档“28.物体管理 > 关于事件的缓存数据.docx ”结合来看。 |
名词索引
以下你可以按住ctrl键点击下面的词,可以直接定位到想了解的名词:
定义 | 变量数组Debug查看 用字符串查看 |
变量数组操作 | 索引取值 获取长度 遍历数组写法复制/切分数组 统计值 脚本调用同步删除 插件指令中的批量关系 |
变量数组应用 | 解谜设计-顺序记忆物体设计-复制事件的批量管理 |
变量数组
定义
变量数组: 指多个值按顺序划分为一个组的数据结构。
每个数字都有一个索引值对应,通过索引可以找到那个数字。
变量数组 是一维数组,且只能装 整数数字(含负整数),索引从1开始计数。 |
游戏编辑器中的 变量列表 就是一个变量数组。
如下图,数组的最大值为80,也就是说这是一个长度为80的变量数组。
根据索引值21,能够获取到 “缓冲变量A” 的值。
由于游戏编辑器中 变量 经常不够用,
所以这里可以使用 变量数组,以节省 变量、开关、独立开关。
注意,一个单独的变量 与 一个长度为1的数组,不相等。
因为它们不是同类数据。
在实际编程语言中,数组的定义极为宽泛,包含:二维数组、多维数组、元数组……这里都不考虑,只考虑简单的一维数字数组。 |
查看方式
1)Debug查看
使用插件指令,可以直接查看数组内的数据。
2)用字符串查看
使用插件指令,可以将数组转为字符串,然后在对话框中显示出来。
如下图将 数组[21] 转为字符串,给字符串[21],字符串使用窗口字符显示。
基本操作
1)索引取值
索引取值: 在指定的数组中,设置索引值,可以通过插件指令获取到相应的变量值。
获取到值后,将把值赋给变量:(如下图,把数组的第1个值,给变量21)
2)获取长度
变量数组长度: 每个数组都具有自己的长度值,具体根据配置、插件指令而定。
比如,核心中配置了五个数字,则长度值为5。
使用插件指令赋值,并显示,可以看到下图效果:
需要注意的是,如果使用索引获取时,索引值超出了数组长度,则获取到默认的0值。
3)遍历数组 - 标准写法
遍历: 是指一次访问数组的每个元素,并执行相关操作。
一个标准的遍历写法如下,
变量23即每次从数组中获取到的值。
用到了3个变量:
缓冲变量A(id 21): 用于表示当前的索引。
缓冲变量B(id 22): 用于表示当前数组的长度。
缓冲变量C(id 23): 用于表示数组中取到的数字,取到即用。
注意,如果此遍历写在了并行事件中,且有 等待 时间,那么你一定要确保同一时间里,变量ABC不会被其他事件调用,否则会出现赋值错位的情况。 |
如果你会编程,那么脚本写法是下面这样的:var arr = //...数组[1]var v22 = 10;for(var v21 = 0; v21 < v22; v21 += 1 ){var v23 = arr[v21];// 》 执行遍历相关操作}这就是一个常规的for循环,只不过参数名为v21,v22,v23 。 |
4)遍历数组 - 节约变量写法
由于数组长度可以实时获取,
你可以按下图写,节约一个变量B:
(变量C被用了两次,第一次执行相关操作,第二次用来获取数组长度并判断)
如果你知道数组长度,比如长度为5,且不会变化,
那么直接 索引取值 就可以,只不过相同的指令要连续写5次:
注意,这里的节约写法只是节约变量,用起来方便一点点,而计算机能处理大量的数据,即使你写10000个变量,也能在一秒内执行完毕,所以放开手去用变量,只要不写成死循环,都没问题。 |
扩展操作
1)复制/切分数组
你可以在核心中,通过复制数组,作为一个临时数组。
复制后操作这个临时数组,用来进行遍历或其他操作。
2)统计值
变量数组核心还额外提供了一些查找最大最小值、平均数的方法。
(注意,由于平均数不能存小数,所以计算结果会被四舍五入。)
用法如下:
3)脚本调用
如果你需要使用一些脚本来调用到数组,可以用下面的指令:
同步删除
同步删除: 是指将多个数组绑定到一起,删除时影响所有绑定的数组。
注意,所有绑定的数组长度必须一致,才能同步删除。
绑定同步删除后,
任意一个数组执行了删除操作,那么其它数组都会一起删除,如下图。
同步删除功能,多用于 事件id数组 和 事件属性值数组,准备两个数组,绑定同步删除,然后根据 事件的属性值 进行条件删除,属性值会留下不符合删除条件的,事件id数组也会只留下对应的事件id。 |
你可以去看看示例 物体管理管理层,筛选出 缓存数字大于50 的所有小爱丽丝的用法。
插件指令中的批量关系
1)事件变量数组
部分子插件支持变量数组的使用,如下图。
“事件变量数组”即数组中存放的所有事件id,会依次执行相关的插件指令操作。
2)事件的缓存数据交互
部分子插件还能用 变量数组 进行数据交互,如下图。
存储值时,会将变量数组中的值,转移存储到槽位中。
读取值时,槽位中的值会被拿出来,形成新的变量数组。
详细介绍和用法可以去看看:“28.物体管理 > 关于事件的缓存数据.docx
”。
变量数组的应用
解谜设计-顺序记忆
解谜设计中,顺序记忆关卡用到了变量数组。
通过变量数组,将关卡的 按钮要求顺序 存储了起来。
具体可以去看看“8.物体 > 解谜设计-顺序记忆.docx
”。
物体设计-复制事件的批量管理
物体管理中,经常会复制大量的事件。
这些新复制的事件,需要将事件id存放到数组中统一管理起来。
具体可以去看看“9.物体触发 > 物体设计-复制事件的批量管理.docx
”。