Unity ToLua 之 Lua调用C#(三)
一.ToLua调用C#重载函数
Lua对于精度和Ref区分的不是很好
local a = Lesson07 ( )
a: Test ( 99 )
a: Test ( 99.99 )
a: Test ( "999" )
a: Test ( 20 , 30 )
a: Test ( 20 , nil )
二.ToLua调用C#中的委托
ToLua中执行委托需要现在C#中添加一个执行委托的方法才能执行 XLua中可以直接执行 ToLua中可以直接+=Event,但是XLua中不可以 XLua中使用 事件名("+/-",函数)
public class Lesson08
{
public UnityAction del;
public event UnityAction eventAction;
public void OnDel ( )
{
del?. Invoke ( ) ;
}
public void OnEventAction ( )
{
eventAction?. Invoke ( ) ;
}
public void OnClearEventAction ( )
{
eventAction = null ;
}
}
local myFunc = function ( )
print ( "Lua Function" )
end
local a = Lesson08 ( )
a. del = myFunc
a. del = a. del + myFunc
a. del = a. del - myFunc
a: OnDel ( )
a. eventAction = a. eventAction + myFunc
a: OnEventAction ( )
a: OnClearEventAction ( )
a. eventAction = a. eventAction + function ( )
print ( "匿名方法" )
end
a: OnEventAction ( )
三.ToLua调用C#中的协程
local coDelay = nil
function StartDelay ( )
coDelay = StartCoroutine ( Delay)
end
function Delay ( )
local a = 0 ;
while true do
print ( a)
WaitForSeconds ( 1 )
a = a + 1
if ( a> 5 ) then
StopCoroutine ( coDelay)
break
end
end
end
StartDelay ( )