步骤:
1 把LuaInterface中的LuaInterface.dll复制到unity的Assets文件夹下的Plugins文件夹中,把luanet.dll和lua51.dll同时复制到工程目录下(即与Assets同上一级目录)
LuaInterface下载地址:http://files.luaforge.net/releases/luainterface/luainterface
或者https://pan.baidu.com/s/1w_Rji8la-zAJUjuNtYJzFw
2 用记事本编辑好lua脚本,编码方式为ANSI(必须),编辑好脚本后把文件名命名为myLuaANSI.lua,放在Assets/StreamingAssets文件夹下,编辑如下:
num=1
function Add2()
num=2
end
functionAdd(num1,num2)
return num1+num2+num
end
3 编辑unity脚本如下:
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LuaInterface;
using UnityEngine.UI;
namespace LuaProject {
public class LuaTest : MonoBehaviour
{
private TextLuatxt; //文本UI
void Start()
{
Luatxt = GameObject.Find("LuaText").GetComponent<Text>();
Lua lua = new Lua(); //创建Lua解析器
lua.DoFile(Application.streamingAssetsPath+ "/myLuaANSI.lua"); //加载放在Assets/StreamingAssets文件夹下的lua脚本
LuaFunction fun2 = lua.GetFunction("Add2"); //取得lua脚本中的Add2全局函数
fun2.Call(); //调用全局函数
LuaFunction fun=lua.GetFunction("Add"); //取得lua脚本中的Add全局函数
object []obj=fun.Call(1, 2); //调用全局函数
Debug.Log(obj[0]); //返回值
Debug.Log(lua.GetNumber("num")); //取得lua脚本中全局变量num的值,打印为2
Luatxt.text= obj[0].ToString();
}
}
}
运行结果为:打印输出依次为5 2 ;UI显示为5
注意:打包发布后,不能把exe和数据包移动到带中文路径的文件目录下,不然无法加载lua文件,由于工程目录下的luanet.dll和lua51.dll并不会被打包,所以需要手动把它们一起复制到与exe文件同目录下。