Zentutorial
  • 首页
  • Zenscript
  • 简单运用
    • 局部变量
    • 尖括号调用
    • 工作台合成
      • 添加配方
      • 移除配方
      • Metadata
      • NBT
    • 熔炉配方
    • 矿物词典(Ore Dictionaries)
    • 物品名称修改
    • tooltips
      • 样式代码
    • 物品条件
    • 物品转换器
    • 掉落物
      • 打草掉落物
      • 生物掉落物
      • Dropt - 导言
        • Dropt - 方法速查
        • Dropt - 使用示例
    • 战利品表 : 导论
      • 战利品表修改(LootTableTweaker)
      • 战利品表修改(LootTweaker-基础)
    • 循环语句(foreach循环) / 普通数组
  • 高级运用
    • 概论
      • 基本类
      • ZenGetter
      • ZenSetter
      • ZenMethod(方法)
    • 常见错误
    • 基本运算
    • 数组与集合
    • 循环与遍历
    • 全局函数
    • Math包
    • if
    • in/has 操作符
    • 战利品表修改(LootTweaker-进阶)
    • 三元操作符
    • 预处理器
    • 全局和静态变量
    • 跨脚本引用
    • 关联数组(映射)
    • IItemStack类型的重新认识
    • IIngredient接口
    • IItemDefinition & IBlockDefinition
    • IData 类型
      • DataMap
    • 穷举与遍历
    • 自定义函数
    • 配方函数与配方事件
      • 配方函数
      • 配方事件
    • 事件概论
      • 一些忠告
    • ZenClass
  • ContentTweaker
    • ContentTweaker
    • 指令
    • 原版加工厂
      • 概论
      • 物品
      • 方块
      • 流体
      • 创造标签
      • 食物
    • 材料系统
      • 基础用法
        • 材料
        • 部件
        • 注册材料部件
        • 材料部件信息
      • 高级运用
        • 自定义部件类型
        • 注册自定义部件
        • 自定义材料部件信息
    • 高级运用
    • 更多鸡联动
    • 匠魂联动
      • 材料引导
        • 材料
        • 构建材料
      • 特性引导
        • 特性
        • 构建特性
        • 特性数据
      • 高级运用
  • 实战
    • 配方
      • 数据驱动合成修改
    • 事件
      • 修改方块掉落物
      • 禁止开创造
由 GitBook 提供支持
在本页
  • 声明
  • 可修改的全局和静态变量

这有帮助吗?

  1. 高级运用

全局和静态变量

你肯定受够了局部变量只能在当前脚本使用,有什么方法可以调用其他脚本的变量呢?使用全局变量或静态变量,允许跨脚本调用!

声明

声明全局变量或静态变量非常简单。注意as 类型名 不能省略,且已定义的全局、静态变量之后不能再次定义,修改其类型或值。全局变量可以直接在其他脚本中使用,静态变量还需要跨脚本调用。

import crafttweaker.item.IItemStack;

// 定义一个全局变量
global stone as IItemStack = <minecraft:stone>;

// 定义一个静态变量
static dirt as IItemStack = <minecraft:dirt>;
  • 含有全局变量的脚本需要用优先级预加载器保证其优先加载。

  • 局部变量可以覆盖全局变量。

  • 全局变量可以在任何地方直接调用,但坏处就是你(或别人)可能不记得(或不知道)该变量的定义处在哪里。

  • 静态变量的使用需跨脚本引用,但好处就是很容易知道该变量是在哪个脚本里定义的,容易维护。

可修改的全局和静态变量

如果要跨脚本、事件和函数这三个作用域之间操作变量,你会发现它们之间的变量是无法直接操作的。

比方来说,如果你正想暂时保存一个值,并且在脚本中任何地方都可以再次修改或调用它,那么这就是上面所说的情况。

这里有一个方法可以绕过全局、静态变量定义后不能再次修改的窘境。

// 在脚本中定义一个静态数组
static array as int[] = [1];

// 修改数组内第一个元素的值
array[0] = 10;

// 输出数组第一个元素的值
print(array[0]);

尽管array as int[]这个数组不能再次定义和修改其类型,但数组内部的元素还是可以修改的。

不只是数组,你也可以定义一个静态的map,尽管该map不能再次定义和修改类型,但是同样可以多次修改其内部的数据。

上一页预处理器下一页跨脚本引用

最后更新于3年前

这有帮助吗?