Lua调用七C#语言(委托和事件)

这篇博客详细介绍了如何在Lua中调用C#的委托和事件,通过示例展示了如何添加、移除和执行委托函数,以及事件的添加、移除和清除操作。内容包括Lua中委托的赋值、复合操作,以及C#事件的添加、删除和触发方法。总结了Lua与C#交互的关键点。
摘要由CSDN通过智能技术生成

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

总结
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值