2
나는 C#과 LuaInterface를 사용하고 있으며 C# 코드에서 작업 스크립트로 이벤트를 보내야합니다. 예를 들어, 작업 루아 스크립트를 인터럽트하거나 로직을 변경하는 button_click 일 수 있습니다. 그래서, 어떻게 이런 일을 할 수 있을까요?작업 루아 스크립트에 C# 이벤트를 보내는 방법은 무엇입니까?
나는 C#과 LuaInterface를 사용하고 있으며 C# 코드에서 작업 스크립트로 이벤트를 보내야합니다. 예를 들어, 작업 루아 스크립트를 인터럽트하거나 로직을 변경하는 button_click 일 수 있습니다. 그래서, 어떻게 이런 일을 할 수 있을까요?작업 루아 스크립트에 C# 이벤트를 보내는 방법은 무엇입니까?
전역 함수를 만들려면 Lua 스크립트가 필요하며 이벤트가 발생할 때 이름으로 호출하거나 루아 코드가 콜백을 등록하기 위해 호출하는 C# 함수를 등록해야합니다. 후자는 훨씬 더 융통성이 있습니다.
private void Test()
{
lua.RegisterFunction("setEventHandler", this, GetType().GetMethod("SetEventHandler"));
lua.DoString(@"
setEventHandler(
function(arg)
print('In my event handler:', arg)
end)
");
CallEventHandler("This is an event!");
}
public delegate void EventHandler(String s);
private EventHandler _eventHandler;
public void SetEventHandler(EventHandler eventHandler)
{
_eventHandler = eventHandler;
}
public void CallEventHandler(string test)
{
_eventHandler(test);
}
루아 스크립트를 중단 할 수 없습니다. 스크립트는 coroutine을 사용하여 응용 프로그램에 일시적으로 제어권을 반환 할 수 있지만 여전히 "중단"하지는 않습니다. – Schollii
이 질문을 보류해야하는 이유는 없습니다. 콜백은 특별한 개념이 아닙니다. – Mud
현재이 보류 상태가 아닙니다. – Schollii