逻辑基础知识

2026-05-08

逻辑基础知识——Mindustry游戏指南,源自wikiwiki-mindustry

来源:基本情報 (wikiwiki.jp 由来、 出典明示)

逻辑/基本信息

最后修改:2021-01-04 (月) 18:54:49

这些关键词已被高亮显示:

逻辑块的类型和说明

※链接名是使用处理器时用Sensor等指定的名称,末尾会附加序号

消息块

与5.0的功能相同,但由于可以用逻辑处理器进行编辑,已重新配置并移至逻辑部分。

  • 链接名:message

  • 鼠标悬停时显示文字

  • 使用Print、PrintFlush进行操作

  • 虽然需要鼠标悬停,但可以轻松输出文字和数字,结合逻辑可用于以下用途:

    • 逻辑创建时的调试(检查变量内的值)
    • 显示逻辑的运行状况或Sensor的信息

开关

1x1的块,可以通过点击/轻触来切换开/关状态。
该状态可以从微处理器/逻辑处理器读取

  • 链接名:switch

  • 使用Sensor判定开/关

sensor a = @enabled in switch1
  • @enabled的值为开启时为true(=1),关闭时为false(=0)

  • 特点是可以手动切换开关,用途示例如下:

    • 需要强制停止逻辑时的保险功能

微处理器

第一个实际的处理块。
这是1x1的,有10块的链接范围(见下文),可以配置执行各种任务。
以120命令/秒的速度执行。

  • 输入指令的主要块

  • 微处理器、逻辑处理器、超级处理器的功能相同,性能不同

逻辑处理器

与微处理器类似,但为2x2。
有20块的链接范围。
以300命令/秒的速度执行。

超级处理器

与逻辑处理器类似,但为3x3。
具有40块的链接范围。
以1500命令/秒的速度执行。
还需要冷却水。

逻辑显示器

可绘制的大型3x3块。
玩家无法使用它(除了查看),但逻辑块可以使用它来绘制形状(例如矩形、直线、多边形、三角形,要创建圆形,只需使用具有许多边的多边形)。
屏幕尺寸为80x80。

  • 链接名:display

  • 使用Draw、DrawFlush进行操作

  • 显示器的左下角为x=0 y=0,右上角为x=80 y=80

  • 与消息块不同,不需要鼠标悬停就能在地图上进行视觉表示,用途示例如下:

    • 以条形图的形式显示核心的物品存储率
    • 用颜色显示电力是否有余力

大型逻辑显示器

逻辑显示器的大型版本。
屏幕尺寸为179x179像素,占用6x6的空间。

  • 基本与逻辑显示器相同

内存单元

可用于数据存储的1x1块。
虽然逻辑块可以存储自己的数据,但在两个块之间传输数据的唯一方法是使用内存单元。
这允许在64个唯一位置存储64个值。

  • 使用Read、Write进行操作

  • 只能保存数字值

  • 特点是可以在多个处理器之间共享值,有以下用途等:

    • 组合处理器进行复杂处理时的共享值存储位置
    • 将值传递给远距离的处理器(处理器1(write) → 内存单元1 → 处理器2(read & write) → 内存单元2 → 处理器3(read)通过这样连接可以将值传递到很远的地方)

内存库

可以存储更多数据的2x2内存单元。
具体来说,是512个值

  • 基本与内存单元相同

链接

可以被处理器读取和控制的块。

  • 不是有一个名为"链接"的块,而是指与处理器链接的块

命令

※详细用法请参考逻辑/使用方法

编程界面类似于Scratch,但只有一个不可嵌套的块堆栈。
一旦到达程序末尾,就会立即从上面重新开始。
由于块的各种计算可能需要时间,建议将较长的程序分成几个较小的逻辑块。
当前6.0中的命令如下:

※附加GUI中的名称(复制到剪贴板时的名称)

  • Get link(getlink):为每个链接命名meltdown1或smelter3以外的自定义名称。
    由于可以通过索引获取每个链接,因此可以循环遍历炮塔。

  • Write(write):写入内存单元的某个位置

  • Read(read):从内存单元的某个位置读取

  • Draw(draw):将多个命令保存到"绘制缓冲区"

  • Draw Flush(drawflush):将绘制缓冲区的内容写入(刷新)显示器

  • Print(print):添加到"打印缓冲区"

  • Print flush(printflush):将消息块中的文本替换为打印缓冲区的内容。

  • Control(control):可以控制块。
    (启用/禁用工厂或发射炮塔)

  • Radar(radar):可以检测实体。
    要从结果中获取属性,请使用sensor

  • Sensor(sensor):块的雷达。
    (例如,可以获取内容、生命值、电力和许多其他东西→下一项)。
    也可以从radar或@unit/ubind获得的单位获取属性

  • Set(set):将变量设置为值。
    在每个"周期"之后重置。

  • Operation(op):执行数学运算(加法、减法等)。
    有很多操作(包括位移和三角法)。
    此命令可以用一个或两个输入执行数学。
    有很多操作我就不一一列举了。

  • End(end):立即结束程序,移至顶部。
    还会清除存储在处理器中的变量。

  • Jump(jump):条件满足时,跳转到代码中的任何位置。
    (将条件设置为始终以强制跳转)。
    这是Mindustry中唯一的控制命令。
    当然,可以用if / else / goto / switch / case / default / break / continue / unless / for /(do)while / function / def语句来使用,但使用起来很麻烦。

  • Unit bind(ubind):绑定选定类型的单个单位。
    使用@unit引用当前绑定的单位

  • Unit control(ucontrol):控制当前绑定的单位。
    有几个子命令,如单位移动或从容器中获取物品

  • Unit radar(uradar):类似于radar,使用单位作为雷达(可能影响距离排序)

  • Unit locate(ulocate):可以找到特定类型的瓷砖。
    可以找到矿石、特定类型的建筑、受损的建筑或敌人的生成点。

子命令

每个命令都有几个子命令。
"draw"的子命令如下:

  • clear:将显示重置为单一颜色

  • stroke:设置线条/描边宽度

  • color:设置下一个形状的颜色,直到颜色改变

  • line:绘制直线

  • rect:填充矩形

  • linerect:绘制空心矩形的描边

  • poly / linepoly:与rect和linerect相同,但半径和边数可变

  • triangle:在3个点之间填充三角形。
    该子命令没有空心版本

对于其他形状,必须有创意:

  • 圆:添加具有许多边的多边形

  • 空心三角形:在大三角形内部创建小三角形

  • 圆弧:创建圆形,使用矩形切割边侧或绘制许多线段

  • 点:制作小矩形

内置变量

虽然可以使用Set和Operation创建变量,但处理器中有一些内置变量

  • @links:处理器链接的数量

  • @time:"Unix时间",自1970年1月1日以来的毫秒数

  • @unit:参见上文

  • @ipt:每个时刻的指令

  • @this:引用自身,用法类似于"container1"

  • @thisx:处理器的x位置

  • @thisy:与上述相同,但为y位置

注意

  • 由于每个周期后所有变量都会被清除,请确保有内存单元。
    变量仅在使用end块时才会被清除

  • 打印刷新会覆盖消息块的内容,但绘制会覆盖旧内容(绘制两个矩形会导致矩形重叠,打印刷新两个单词会导致第一个单词被第二个单词覆盖)

  • 只能读取无人机的状态(如生命值或x位置),但无法控制它们

  • 可以将程序导入和导出到剪贴板。

  • 每个处理器以"周期"执行代码,执行后从上面重新启动

  • 禁用的块如果处理器不总是禁用它,它会自己启用

  • 每次使用单位绑定时,都会绑定到另一个单位,因此可能会意外地同时绑定该类型的所有单位。

来源:https://www.reddit.com/r/Mindustry/comments/ic9wrm/logic_in_60/ (reddit)