变量类似于记分板,由一个变量名与变量值组成
每一个对象都可以创建若干变量,变量是储存在对象中的,退出游戏后会被保存并且不依赖组件
变量可以使用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