Lua学习笔记(3)

Slua与unity的交互

Posted by SixTeen on July 5, 2016

在unity中使用SLua创建lua虚拟机,执行字符串,执行lua文件

//test3.cs

using UnityEngine;
using System.Collections;
using SLua;
using System.IO;
using System;

public class test3 : MonoBehaviour {
    
    //使用Slua接口创建一个lua虚拟机
    private static LuaState ls_state = new LuaState();
    void Start () {
        //修改读取的默认路径
        LuaState.loaderDelegate = ((string fn) => {
            //设置lua文件目录
            string file_path = Directory.GetCurrentDirectory() + "/Assets/lua_script/" + fn;
            Debug.Log(file_path);
            return File.ReadAllBytes(file_path);
        });
        //执行字符串
        ls_state.doString("print(\"hello world\")");
        //执行lua文件
        ls_state.doFile("test.lua");
    }
}
print("load successfully")

使用Slua在unity中调用lua文件中的函数

using UnityEngine;
using System.Collections;
using SLua;
using System.IO;
using System;
using LuaInterface;

public class test3 : MonoBehaviour {
    

    // Use this for initialization
    void Start () {
        LuaState ls_state = new LuaState();
        LuaState.loaderDelegate = ((string fn) => {
            string file_path = Directory.GetCurrentDirectory() + "/Assets/lua_script/" + fn;
            Debug.Log(file_path);
            return File.ReadAllBytes(file_path);
        });
        //初始化LuaObject对象,如果没有这一步将无法对luafunction进行call
        LuaObject.init(ls_state.L);
        ls_state.doFile("test.lua");
        //获取脚本中的函数
        LuaFunction mul = ls_state.getFunction("mul");
        //执行
        double result = (double)mul.call(2, 3);
        Debug.Log(result);
    }
}
function mul(v1,v2)
    return v1*v2
end

在unity中编写类,在lua中创建类和调用类

这里出了很大问题,在lua中使用类中的静态方法来创建该类的时候一直出现产生nil的情况,现在还没有解决。

[Unity]使用Slua框架开发Unity项目的重要步骤

1
16.7.5/19.46