设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5105|回复: 6
打印 上一主题 下一主题

[原创发布] 变量如何存数组

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7531
在线时间
1227 小时
注册时间
2008-12-14
帖子
555
跳转到指定楼层
1
发表于 2018-4-1 09:29:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
看到有朋友问,还是回答一下,希望论坛有各路大神来拽脚本,每天打开论坛有新收获,哈。

首先,能不能用变量存数组,答案是能。

但以前不知道怎么存,那我是怎么存的?我用字符串存,比如说 1,2,3,4,5 五个数,要存入一个变量,我会把他弄成 1+‘,’+2 +‘,’+3+‘,’+4 +‘,’+5。这样就成了一个长字符串‘1,2,3,4,5’

变量里就存这个,存完了了取出来,再根据str.split(","),直接还原出一个数组。再任意使用。

我的插件LCK_AutoBackOldMap.js里有这种写法的运用,不知道可以看看。85行,111行。

**************************************************************************************************

那么能不能直接往变量存数组?答案也是可以的。

这样做:
        $gameVariables.setValue(44, []);
        $gameVariables.value(44).push(5);
        $gameVariables.value(44).push(6);
这样就存好了,相当于往44号变量存入了一个数组,又往数组存了两个元素,一个是5,一个是6.
好,现在我要得到这两个元素,怎么得到?
        $gameVariables.value(44)[0] → 5;
        $gameVariables.value(44)[1] → 6;
我们会发现,这样的数组只适合遍历,不适合快速定位。
所以如果需要快速找到元素,最好是用字典。
那么,这么写:
      $gameVariables.setValue(44, []);
        $gameVariables.value(44)[5] = 55;
        $gameVariables.value(44)[7] = 77;
      这样做好以后,取的时候,就写$gameVariables.value(44)[7],取出的就是77

********************************************************************************************************************
最后还有一种办法,是我使用比较多的,直接用脚本写,存在各个已有类里面,这里不讨论了。
如果以上都看不懂,说明基础语言知识还是不够,需要锻炼。但我上面讲的算详细,复制粘贴应该也能用了。

最近在研究chrono敌人的AI,还没找到方法改,有知道的大咖请告知,谢谢。
      

需要购买本人MV插件必须先加wx好友。加不上wx就是本人忙,没时间卖。原则上太久以前的插件也不想卖,因为我也忘了,维护上会不给力。wx名:alskyif    本人插件地址:
   LCK_SRPG梦幻模拟战、火焰纹章类系统
   究极立绘ADV系统

   究极换装统合系统
   究极! 回想与CG系统
   消息文字的距离调整  
   自动返回上一张地图

Lv3.寻梦者

梦石
0
星屑
3414
在线时间
461 小时
注册时间
2013-12-7
帖子
333
2
发表于 2018-4-3 09:59:09 | 只看该作者
因为地图上的判断本身不会用到数组,且数据类型是固定的,所以不用setValue方法更好,$gameVariables._data[id]直接操作就行。

如$gameVariables._data[44] = [1,2,3,4,5];
$gameVariables._data[44].push(6,7,8);

要在事件中修改的话操作选带入,操作数选脚本,脚本后面直接填入一个数组就可以。

评分

参与人数 1+1 收起 理由
2256538860 + 1 塞糖

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1702
在线时间
146 小时
注册时间
2017-12-28
帖子
129
3
发表于 2020-11-4 10:37:41 | 只看该作者
ekmomo 发表于 2018-4-3 09:59
因为地图上的判断本身不会用到数组,且数据类型是固定的,所以不用setValue方法更好,$gameVariables._data ...

要是想删除一个元素,用什么语句啊?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
24479
在线时间
5077 小时
注册时间
2016-3-8
帖子
1623
4
发表于 2020-11-4 11:52:49 | 只看该作者
jianghe006 发表于 2020-11-4 10:37
要是想删除一个元素,用什么语句啊?


delete 或 splice



比较 delete 与 splice 应用在 array(数组) 上的差别

splice:
var array=[ 'a', 'b', 'c', 'd' ];
array.splice(2, 1); // 删除 'c'
console.log(array.length); // 3
console.log(array); // [ 'a', 'b', 'd' ]

delete:
var array=[ 'a', 'b', 'c', 'd' ];
delete array[2]; // 删除 'c'
console.log(array.length); // 4
console.log(array[2]); // 'undefined'
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1702
在线时间
146 小时
注册时间
2017-12-28
帖子
129
5
发表于 2020-11-6 10:53:50 | 只看该作者
看到了,一会试试,多谢大佬
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-15 04:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表