跳轉至內容

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()
華夏公益教科書