1. 主页
  2. 文档
  3. GQ自定义命令
  4. 概念释义
  5. 变量

变量

变量类似于记分板,由一个变量名与变量值组成

每一个对象都可以创建若干变量,变量是储存在对象中的,退出游戏后会被保存并且不依赖组件

变量可以使用gkentityvar或者gkworldvar命令创建,具体请查看命令部分

变量在取用时非常方便,可以直接穿插在命令中,只不过在运行原版命令时需要嵌套gkrun命令

例如为最近玩家创建a变量,赋值为10:

execute as @p run gkentityvar a "10"

也许你会有疑问,这里的10为什么加了双引号,这是因为这个位置设定变量值,变量值可以为数字或者字符串(也可以设置两条命令参数,但是这个目前有些小问题,所以暂时使用这种方法)总之记得使用双引号

刚刚我们顺利创建了一个实体变量a,它的值为10

那么如何取用变量呢,也非常简单,变量取用格式为:

一个空格 + $+变量类型(self/world)+var+变量名

在命令中取用变量需要将原版命令嵌套到gkrun命令中执行,gkrun语法十分简单:

gkrun “原版命令”

例如在say命令中显示a:

execute as @p run gkrun "say 变量a的值为: $self.var.a"

1.首先将命令执行者转换为最近的玩家

2.执行gkrun命令,将say命令嵌套进去

3.在命令执行时会查询self(自身)的变量中是否包含a,如果包含a则会将a的值替换变量处

如上命令则等价于:

execute as @p run gkrun "say 变量a的值为: 10"

如果创建一个世界变量(全局变量)并且在聊天框显示:

execute as @p run gkworldvar b "100"
execute as @p run gkrun "say 变量b的值为: $world.var.b"

修改变量需要使用命令修改

gkoperatevar [变量类型] [变量名]  [运算符] [运算值]

参数:变量类型

可选参数参数释义
entity实体变量时使用固定字段entity
world全局变量时使用固定字段world
变量类型

参数:变量名

可选参数参数释义
[变量名:str] 变量名
变量名

参数:运算符

可选参数参数释义
+=将变量的值设置为其与运算值的和
-=将变量的值设置为其与运算值的差
*=将变量的值设置为其与运算值的乘积
/=将变量的值设置为其与运算值的商
=将变量的值设置为其与运算值的值
%=将变量的值设置为其与运算值的余数
i将变量的值设置为其值的整数类型
f将变量的值设置为其值的小数类型
s将变量的值设置为其值的字符串类型
spl+将变量值设置为其值截取前段的内容
+spl将变量值设置为其值截取后段的内容
sin暂未更新将变量值设置为其值x的f(x)=sin(x)的返还值,即对变量作sin运算
运算符

参数:运算值

可选参数参数释义
[运算值]可以直接填数字也可以是一个变量($self.var.xxx)
运算值

例如将a值加上当前生命值(a为实体变量):

execute as @p run gkrun "gkoperatevar entity a += $self.attr.health"

如果要将b的值设为a的值(b为全局变量):

execute as @p run gkrun "gkoperatevar world b = $self.var.a"

如果要将a的值设为字符串:

execute as @p run gkrun "gkoperatevar entity a s xxx"

这里需要使用s运算符(string),并且后面的运算值不影响结果,任意值均可(例如xxx或者0)

变量截取

变量截取功能可以将字符串分割,分别获取前半段和后半段

例如全局变量test的值为:hiworld,执行operate:

execute as @p run gkrun "gkoperatevar world test spl+ 2"
//test = hi

我们可以看到运算符使用了“spl+”,而运算值为“2”,意思为将字符串“hiworld”在第2个字符位置分割,将前段内容设置为变量test的值

另外也可以使用+spl运算符:

//假设此时test为“hiworld”

execute as @p run gkrun "gkoperatevar world test +spl 2"
//test = world
1.变量与对象的概念
2.使用变量输出hiworld

我们要如何帮助您?