魔兽3 Lua制图问题记录 - 接口设计要考虑虚拟机延迟问题

通过 'jass.code' 提供接口给Jass层,然后在Jass层调用该接口,并在接口内使用 DzSetUnitID(unit, uid) 这类可能涉及到Jass虚拟机进行较长时间操作的函数时,可能会由于Jass虚拟机的返回值不及时,导致此次Lua接口返回的handle为空值。

这种现象通常在大规模调用(比如瞬时从Lua侧实现的单位池内取出单位句柄,并在Lua侧修改单位类型)时会明显表现出来。

已经确认有问题的函数:

  • DzSetUnitID

类似的思路下,可能有问题的函数:

  • CreateUnit
  • AddSpecialEffectLoc