unity中调用Lua脚本中的全局函数和全局变量的值

步骤:

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文件同目录下。

猜你喜欢

转载自blog.csdn.net/zxy13826134783/article/details/80306257