Ulua_toLua_基本案例(三)_CallLuaFunction

来源:互联网 发布:新浪网络写手在哪投稿 编辑:程序博客网 时间:2024/06/02 10:49

在Untiy中用Lua,必须要LuaInterface。LuaInterface的介绍请看:点击打开链接

可以先光写Lua,生成.lua的纯文件。再Unity中通过,luaState.DoFile("main.lua");来运行。也可以直接在C#中写。用Lua.DoString()来转换。大量项目的话,还是分开写好,lua用LuaStudio来开发。

using UnityEngine;using System.Collections;using LuaInterface;using System;public class CallLuaFunction : MonoBehaviour {    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();}    void OnDestroy()    {        if (func != null)        {            func.Dispose();            func = null;        }        lua.Dispose();        lua = null;    }    int CallFunc()    {                func.BeginPCall();                        func.Push(123456);        func.PCall();                int num = (int)func.CheckNumber();                            func.EndPCall();        return (int)num;            }    //取消注释, 在profiler中查看gc alloc//void Update ()     //{        //func.Call(123456);        //CallFunc();        //}}


0 0