Lesson7_Lua调用C#_Call Delegate、Event

lua调用C#的委托与事件
local obj = CS.Lesson7()

Lesson7声明如下
public class Lesson7
{
    public UnityAction del;
    public event UnityAction eventAction;
    public void DoAction()
    {
        del?.Invoke();
    }
    public void DoEvent()
    {
        eventAction?.Invoke();
    }
    public void CleanEvent()
    {
        eventAction = null;
    }
}
c#中的委托就是拿来装lua的函数
local fun=function ( )
	print("Lua 函数Func")
end

Lua没有+= 只能+,且第一次添加函数的时候,得直接用=赋值
obj.del=fun --第一次
obj.del=obj.del+fun --第二次
obj.del()--直接打开委托
obj.del=obj.del-fun
obj:DoAction()--c#脚本中的函数调用
obj.del=nil --清空委托
obj.del=fun --清空后又算第一次,用等号初始化

--事件
local fun2 = function ( )
	print("事件函数")
end
obj:eventAction("+",fun2) --事件与委托的方式十分不一样
obj:eventAction("+",fun2)
obj:DoEvent()
obj:eventAction("-",fun2)
obj:DoEvent()
--事件因为不能在类外部去调用,也就不能直接去给事件赋值为nil来清空,采取调用c#中的方法去专门清空事件
obj:CleanEvent()
obj:DoEvent()
posted @ 2024-02-29 21:04  波奇型蠢驴  阅读(4)  评论(0)    收藏  举报