跳转至内容

SpringRTS/Callins 中的 Lua

来自维基教科书,开放世界中的开放书籍

Callins 是在你的脚本中定义的函数,当某个特定事件发生时,Spring 会调用这些函数。
你应该把 Callins 当作一些编程语言中遇到的事件处理程序。在引擎内的每个事件中,都会调用你的脚本,并调用你的函数。

这是一个示例

function widget:Initialize()
  Spring.Echo("Widget has loaded")
end

正如你在下表中看到的,Initialize() Callin 会在每次加载脚本时调用。因此,在这个示例中,一旦脚本被引擎加载,我们函数块中的所有内容都会被执行。
在我们的示例中,我们会收到一条消息“小部件已加载”。由于 Initialize() Callin 在每个游戏只调用一次,所以我们只会收到一次该消息,并且是在游戏开始时。

Callin 名称 描述 同步模式 异步模式
AddConsoleLine()
AllowCommand()
AllowFeatureBuildStep()
AllowFeatureCreation()
AllowResourceLevel()
AllowResourceTransfer()
AllowUnitBuildStep()
AllowUnitCreation()
AllowUnitTransfer()
CobCallback()
CommandFallback()
CommandNotify()
CommandsChanged()
ConfigureLayout()
DrawGenesis() 不要使用
DrawInMiniMap()
DrawScreen()
DrawScreenEffects()
DrawWorld() 不要使用
DrawWorldPreUnit() 不要使用
DrawWorldReflection()
DrawWorldRefraction()
DrawWorldShadow()
Explosion()
FeatureCreated()
FeatureDestroyed() 当游戏中的某个特征被摧毁时运行
GameFrame()
GameOver() 当游戏结束条件满足时运行
GamePreload()
GameStart() 当游戏开始时运行
GetTooltip()
GroupChanged() 当组表格中的值发生变化时运行
Initialize() 脚本加载后运行一次
IsAbove()
KeyPress() 当键盘按键被按下(未释放)时运行
KeyRelease() 当键盘按键被释放(按下后)时运行
LayoutButtons()
MapDrawCmd()
MouseMove() 当鼠标光标移动时运行
MousePress() 当某个鼠标按钮被按下(未释放)时运行
MouseRelease() 当某个鼠标按钮被释放(按下后)时运行
ProjectileCreated()
ProjectileDestroyed()
ShockFront()
Shutdown()
StockpileChanged()
TeamDied() 当某个团队被淘汰时运行
TerraformComplete()
UnitCloaked() 当某个单位被隐形时运行
UnitCmdDone()
UnitCommand()
UnitCreated() 当某个单位实例被创建时运行
UnitDamaged() 当某个单位被其他单位攻击(并造成伤害)时运行
UnitDecloaked() 当某个单位被解除隐形时运行
UnitDestroyed() 当某个单位被摧毁时运行
UnitEnteredAir()
UnitEnteredLos()
UnitEnteredRadar()
UnitEnteredWater() 当某个单位进入水中时运行
UnitFinished()
UnitFromFactory() 当某个单位从工厂建造完成时运行
UnitGiven() 当某个单位被给予某个玩家时运行
UnitIdle() 当某个单位变为空闲状态时运行
UnitLeftAir()
UnitLeftLos()
UnitLeftRadar()
UnitLeftWater()
UnitLoaded()
UnitMoveFailed()
UnitPreDamaged() 当某个单位因某些原因受到伤害时运行。这可能是由于攻击或副作用(例如其他单位的爆炸)造成的。
UnitSeismicPing()
UnitTaken()
UnitUnloaded()
WorldTooltip()
华夏公益教科书