铁锈里的单位参数信息以两种形式存储着,一种是直接写在游戏的dex文件或jar文件中,和游戏核心源码在一块儿,还有一种是游戏后面版本有了mod系统后写在实体ini文件中,我们现在制作mod单位都是通过创建新的ini文件来进行的。

这里的ini文件是一种以ini为文件扩展名以UTF-8为编码格式的纯文本文件,每个单位对会应一个ini文件。其内容结构上由节(Section)、键值对(Key-value Pair)组成。一个文件会包含多个节,一个节包含多个键值对,每个键会对应一个值,键和值通过:进行连接。

#节由方括号包裹
[section1]
#每个节和每个键值对都需要单独占一行
#键值对写在节后表示它从属于这个节
key1:value1
key2:value2

[section2]
key3:value3

[section3]
...

铁锈代码规定由几种不同的节来负担单位不同的功能。例如:

#core或称核心节承担了单位的基本和杂项的属性
[core]
#单位的名称
name: tank
#单位的造价
price: 1000

#movement或称移动节承担了单位移动相关的属性
[movement]
#单位的移动速度
moveSpeed: 2

每个铁锈单位有这几个必要的属性才能被游戏承认,否则你会在加载时收获报错。

[core]
#单位的真名
name: tank1
#单位的生命值
maxHp: 210
#单位的造价
price: 350
#单位的重量
mass: 3000
#单位的体积半径
radius: 10

[graphics]
#单位的主体贴图
image: tank.png

[attack]
#可攻击
canAttack: false
#可攻击飞行单位
canAttackFlyingUnits: false
#可攻击地面单位
canAttackLandUnits:   false
#可攻击水下单位
canAttackUnderwaterUnits: false

[movement]
#移动类型
movementType: LAND

单位不同属性(键)要填的值的类型是不同的。比如单位重量mass只能填正整数,建筑类单位的占地大小footprint只以1,2,1,1这种格式表示单位占地以单位为中心向左延伸一格向上延伸两格向右向下延伸一格。这些要求在代码表中会有提示。

铁锈在一行的开头使用#来将该行的内容注释掉,即游戏在加载时会忽略这行内容。


调试单位

重新加载单位

通常情况下,每次进入铁锈时,模组会被自动加载。单击主界面中“模组”按钮后,找到“重载数据”按钮,单击即可重新加载模组数据。

如果你正在沙盒中进行模组调试,在actions、all和modded中可以找到“Reload units”,单击此按钮铁锈将会重新加载所有单位。如果你只是更改了单位的数据,也可以在modded中单击“Quick Reload”,此时铁锈会以很快的速度重新加载单位。

Debug按钮

在沙盒的actions中,有一个“Debug”选项,默认为关闭,打开此选项后,单击任意单位的血量都会看到“--Debug--”字样和当前单位的信息。

Debug可以显示的信息
  • 单位name
  • 单位id
  • x
  • y
  • 高度
  • 角度
  • 图层
  • 自定义资源
  • 自定义内存(memory数组中的值不能显示)
  • 自定义目标(customTarget1)

如果你的单位使用了自动触发(AutoTrigger),在打开“Debug”选项后,还可以打开“Trigger Debug”选项,打开此选项后,选中任意单位将能够看到它们的自动触发,并且能够看到自动触发中单个条件的值。

相关链接