Unity3d toLua# 框架学习 -- Function

本文详细介绍了在Unity3D中使用toLua#框架调用Lua函数的过程,包括LuaTable.GetLuaFunction()与LuaState.GetFunction()的使用,以及c#调用Lua函数的多种方式,如Invoke(), Call(), ToDelegate()和PCall等。同时阐述了函数查找、调用的内部机制。" 123521218,12555208,中国水资源现状:总量、供需与挑战,"['水资源管理', '环保', '农业节水', '水污染治理', '水资源分布']
摘要由CSDN通过智能技术生成

toLua的第三个案例是关于如何在c#中调用Lua函数的
一、LuaTable.GetLuaFunction()与LuaState.GetFunction()
具体地调用方法如下:

	LuaTable table = new LuaTable();
	LuaFunction func = table.GetLuaFunction("Function_Name");
	
	LuaState lua = new LuaState();
	LuaFunction func = lua.GetFunction("Function_Name");

二、GetFunction的执行流程
1.首先该方法会从funcMap这个字典中查找对应的方法,获取该方法的弱引用,并检查其状态(是否为游离态)。如果是非游离状态,则获取该函数的强引用,并再次检查函数的状态。若再次为true,则从GC列表中删除该方法并返回该函数,否则从funcMap中删除该方法。
在这里插入图片描述

2.若并未从funcMap中获取到函数,则执行PushLuaFunction方法,该方法会检测对应的持有者是否存在,并检测该方法是否为lua的function,然后进行压堆栈。
在这里插入图片描述

3.完成PushLuaFunction,再执行和1相同的步骤,只是在funcRefMap中查找。如果都没查找到该方

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值