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

Project1

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

[有事请教] 如何将一个变量定义为数组?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
18548
在线时间
1029 小时
注册时间
2019-3-5
帖子
1418
跳转到指定楼层
1
发表于 2020-1-17 16:51:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Zeldashu 于 2020-1-17 17:32 编辑

或者说如何从数组里提取数值作为变量?又如何才能添加、加减乘除、移除数组的某项内容?

简而言之还是那个“变量不够用”的头痛问题,在翻查了一下js入门基础仍然无果后,突然发现了N年前的聊天记录有一张截图:

貌似能解决这个问题,可是实测之后发现了如下问题:

通过这种方法将变量定义为数组后,数组内容无法永久存储。比如变量1=[10,20,30],通过图中的方法读取变量1=$gameVariables.value(1)[2],可以获得变量1=30(通过显示文本来验证)。
之后再次显示文本发现变量1又变为0了。


而通过脚本
var x = New Aarry(
x[0] =10;
x[1] =20;
x[2] =30;


来制作数组似乎可以永久存储,但是我不知道怎么才能读取并且修改这些存储的数值并将它们代入到某个指定的变量之中。或者反过来。
希望有大佬能指点一二。





翻阅国外友人整理的Script Calls似乎发现了解决方法,虽然看不太懂,但是照着复制粘贴就能用,唯一缺陷(?)就是被做成数组的变量不能碰:



[size=14.6667px]// 将【变量1】设置为一个数字数组
[size=14.6667px]$gameVariables.setValue(1, [1, 2, 3]);

[size=14.6667px]// 访问变量1,索引第二个元素并将其设置为10
[size=14.6667px]$gameVariables.value(1)[1] = 10;

[size=14.6667px]// 打印变量1,也就是数组,它现在应该是[1,10,3]
[size=14.6667px]console.log($gameVariables.value(1))

[size=14.6667px]// 事件运用例子:
[size=14.6667px]Script:$gameVariables.setValue(20,  ["あ", "い", "う", "え", "お"]);
[size=14.6667px]:      :$gameVariables.setValue(19, $gameVariables.value(20)[1]);
[size=14.6667px]Text:None, Window, Bottom
[size=14.6667px]:    :\v[19]

[size=14.6667px]// 另一个由Caethyrill提供的例子:
[size=14.6667px]Control Variables:#0001 Array = ["あ", "い", "う", "え", "お"]
[size=14.6667px]Control Variables:#0002 First = $gameVariables.value(1)[0]
[size=14.6667px]Control Variables:#0003 Random = $gameVariables.value(1)[Math.randomInt(5)]
[size=14.6667px]Text:None, Window, Bottom
[size=14.6667px]:    :Array:  \v[1]
[size=14.6667px]:    :First:  \v[2]
[size=14.6667px]:    :Random: \v[3]

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39665
在线时间
7484 小时
注册时间
2009-7-6
帖子
13483

开拓者贵宾

2
发表于 2020-1-17 17:23:42 | 只看该作者
连续两次显示同一个变量,并且期间没操作过这个变量,值却发生了改变显然应该先检查是不是有脚本影响了他的值……

点评

那只能说明这个数组对应下标的值就是0  发表于 2020-1-17 18:01
二次读取的时候中间有条“变量1=$gameVariables.value(1)[2]”,我认为是这个导致了存储的数组归了0。  发表于 2020-1-17 17:26
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
33412
在线时间
6552 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

3
发表于 2020-1-17 17:43:59 | 只看该作者
我觉得是你想太复杂了

首先变量并不局限于只是数字
而后你可以取看看JS的基础教程中的数组
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
22
在线时间
2 小时
注册时间
2020-1-16
帖子
1
4
发表于 2020-1-17 17:59:25 | 只看该作者
本帖最后由 wzj421301214 于 2020-1-17 18:25 编辑

从数组里提取数值作为变量:
        var arr=[1,2,3,4,5,6,7];   //提取数值的目标数组
        var arr_temp;     //此项作为目的项用于存放取出的数组的值
        for(var i=0;i<arr.length;i++){    //遍历数组
                arrv_temp=arr;  //赋值
                console.log(arrv_temp);   //把取出的值打印在控制台上
        }

添加、移除数组的某项内容
        推荐使用splice方法,该方法会改变原始数组的值
                splice(index,len,[item]);
        其中: index代表数组开始下标, len代表替换/删除的长度, item代表替换的值,若删除操作,此项为空
                var arr=[1,2,3,4,5,6,7];
                arr.splice(2,0,"Mark1");        //在2和3之间填加字符串"Mark1"
                console.log(arr);        //输出 1,2,Mark1,3,4,5,6,7,此时数组内元素为:1,2,Mark1,3,4,5,6,7
                arr.splice(2,1,"Mark2");        //将2之后的1个元素替换成字符串"Mark2"
                console.log(arr);        //输出 1,2,Mark2,3,4,5,6,7,此时数组内元素为:1,2,Mark2,3,4,5,6,7
                arr.splice(2,1)        ////将2之后的1个元素删除
                console.log(arr);        //输出 1,2,3,4,5,6,7,此时数组内元素为:1,2,3,4,5,6,7

               
       
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

5
发表于 2020-1-17 21:23:08 | 只看该作者
// 将【变量1】设置为一个数字数组
$gameVariables.setValue(1, [1, 2, 3]);

这个是可以的。
一般就是这么设置的。
$gameVariables._data[10]
这个是默认的变量
也可以直接设置$gameVariables._data[10]
$gameVariables.value(10)是一个函数,输出10号变量的值,用来修改是不合适的。
这个输出的,如果是没定义的,会以0输出

被做成数组的变量变成了数组了。你自然不能使用默认的那个事件里的变量去操控他了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 21:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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