随着新补丁在四月初发布,我们已经在工具链中实施了必要的更改以支持它,同时仍然保持向后兼容性。
WurstExportedObjects
中,以便更轻松地转移到生成的对象中or
运算符的优先级现已正确标准库
Wurst 现在支持一种有限的可变参数函数。可变参数只能被迭代,不能直接访问,也无法获取其数量。
声明:
function sum(vararg int ints)
var result = 0
for i in ints
result += i
print(result.toString())
用法:
sum(1,2,3,4)
sum(14,22)
sum(23,52,5234,5,5)
标准库中的一些函数现在通过可变参数实现,因此提供了可变参数功能,例如用于对象编辑和编组的 ID 列表:
@compiletime function genBuilder()
new UnitObjDefinition('buil', 'hfoo')
..setNormalAbilities(asList(ID_FIREBALL, ID_FIRE_NOVA))
..setStructuresBuilt(asList(ID_GUARD_TOWER, ID_CANNON_TOWER))
init
CreateGroup().addUnit(u1, u2, u3)
此外,现在可以使用 asList
来内联创建元素的 LinkedLists
asList("This", "will", "be", "a", "list")
asList(75., 125., 175.).add(250., 375.)
asList(players[0], players[1], players[2], players[3])
想最高效地使用 Wurst 吗?在“专业技巧”这个栏目下,我们将定期介绍一些方法或产品来改善您的工作流程:
vec2
和 vec3
向量元组。与类不同,它们没有标识,因此可以零开销地进行转换。这意味着您可以获得直接使用坐标的速度,同时享受到类似类的语法和功能的便利性。一些常见用法:
// Event response
getSpellTargetPos() // instead of GetSpellTargetX/Y
getOrderPos() // instead of GetOrderPointX/Y
getOrderTargetPos() // instead of GetWidgetX(GetOrderTarget()) etc.
// As class member, e.g. position, velocity
class A
vec2 position
// Angle between points & Polar projection
function onEvent()
let casterPos = GetTriggerUnit().getPos()
let angl = casterPos.angleTo(getSpellTargetPos())
flashEffect(Objects.impaleTargetDust, casterPos.polarOffset(angl, 256.))
您会注意到,许多扩展函数也期望向量元组作为参数,这使得它们的使用更加无缝。
此致 Frotty