Lua代码
print("*****************Lua调用C# 委托相关知识点******************");
local obj = CS.Lesson7();
--委托是用来装函数的
--使用C#中的委托 就是用来装lua的函数
local fun = function()
-- body
print("Lua中的委托函数");
end
--lua中没有复合运算符 不能+=
--如果第一次往函数中加函数,因为是nil 不能直接+
--所有第一次要先=
print("*********开始委托加函数*********");
--第一次
obj.del=fun;
--第二次
obj.del=obj.del+fun;
--第三次
obj.del=obj.del+function( )
-- body
print("Lua中委托临时函数");
end
--执行委托
obj.del();
print("*********开始委托减函数*********");
obj.del=obj.del-fun;
obj.del=obj.del-fun;
obj.del();
print("*********清空委托函数*********");
obj.del=nil;
--如果委托清空后,需要再次使用
print("*********清空以后重新调用*********");
--需要先=才能+
obj.del=fun;
obj.del=obj.del+fun;
obj.del();
print("*****************Lua调用C# 事件相关知识点******************");
local fun2 = function()
-- body
print("Lua中的事件函数");
end
--事件加减函数 和委托完成不一样
--lua中使用C#事件 加函数
--有点类似使用成员方法 冒号事件名("+",函数变量)
print("*********事件添加函数*********");
obj:eventAction("+",fun2);
obj:eventAction("+",function ( ... )
-- body
print("事件加的匿名函数");
end);
obj:DoEvent();
print("*********事件减少函数*********");
obj:eventAction("-",fun2);
obj:DoEvent();
print("*********事件清除*********");
--清事件 不能直接设空
obj:ClearEvent();
obj:DoEvent();
C#代码
#region 委托和事件
public class Lesson7
{
public UnityAction del;
public event UnityAction eventAction;
public void DoEvent()
{
eventAction?.Invoke();
}
public void ClearEvent()
{
eventAction = null;
}
}
#endregion
总结