在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();
//}
}