Tolua使用笔记二:lua与C#的函数,变量交互方法

本文介绍了使用Tolua在C#中调用lua函数和操作lua变量的方法。通过lua.GetFunction获取lua函数对象,通过LuaFunction的Call方法进行调用,并注意手动释放内存以防止内存泄漏。同时,文章讲解了如何声明和访问lua全局变量,以及lua中table的获取和创建,强调使用完LuaTable后需手动调用Dispose释放内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接着上一回的接着讲:

案例三:

到这里久终于到了大家最感兴趣的地方了,热更新的价值就在于用脚本语言写逻辑,这样可以实现逻辑的频繁改动而不用每次更新都重新下载。

而这个过程中必然涉及到C#对lua的一个逻辑调用,而这个例子实现的就是C#的函数的调用

核心代码如下:

    private string script = 
        @"  function luaFunc(num)                        
                return num + 1
            end

            test = {}
            test.luaFunc = luaFunc
        ";

    LuaFunction func = null;
    LuaState lua = null;
	
	void Start () 
       {
        lua = new LuaState();
        lua.Start();
        lua.DoString(script);

        //Get the function object
        func = lua.GetFunction("test.luaFunc");

        if (func != null)
        {
            //有gc alloc
            object[] r = func.Call(123456);
            Debugger.Log(r[0]);

            // no gc alloc
            int num = CallFunc();
            Debugger.Log(num);
        }

        lua.CheckTop();
	}

      int CallFunc()
    {        
        func.BeginPCall();                
        func.Push(123456);
        func.PCall();        
        int num = (int)func.CheckNumber();                    
        func.EndPCall();
        return (in
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值