Я создаю систему на VB.net, которая использует Lua через LuaInterface.
Чтобы связать событие в Lua с функцией, я могу просто сделать это:
RegisterEvent("tick", function(nt)
if not lcc then return end
if nt>=tt then
f()
lcc=false
end
end)
Как видите, в настоящее время я использую переменную lcc
для отмены функции. Это как бы взломано, и функция все равно будет вызываться, вызывая ненужные накладные расходы. Так выглядит мой сабвуфер «RegisterEvent» на моем VB.net
Public Sub RegisterEvent(ByVal eventName As String, ByVal func As LuaFunction)
Select Case eventName.ToLower
Case "keydown"
AddHandler Me.event_keydown, AddressOf func.Call
Case "keyup"
AddHandler Me.event_keyup, AddressOf func.Call
Case "mousedown"
AddHandler Me.event_mousedown, AddressOf func.Call
Case "mouseup"
AddHandler Me.event_mouseup, AddressOf func.Call
Case "ready"
AddHandler Me.event_ready, AddressOf func.Call
Case "tick"
AddHandler Me.event_tick, AddressOf func.Call
Case "frame"
AddHandler Me.event_frame, AddressOf func.Call
End Select
End Sub
Я бы хотел сделать что-то подобное в моем Lua:
local lcc=RegisterEvent("tick", function(nt)
print("The Ticks Are Now At: "..nt)
if nt>5000 then
DisconnectEvent(lcc)
end
end)
Проблема в том, что я не уверен, как мне следует изменить мою функцию / Sub RegisterEvent и как мне сделать DisconnectEvent.
Спасибо за любую помощь. Я знаю, что это немного раздражает, пытаясь понять, что я пытаюсь сказать. Не стесняйтесь оставлять комментарии с просьбой дать разъяснения. Я буду более чем готов попытаться объяснить это в меру своих способностей. Если у LuaInterface есть какой-то нативный способ справиться с этим, я тоже открыт для этого:)
Всё, что может помочь - это прекрасно!