SLua初学(一)

SLua

插件信息

1、插件网站

2、插件GitHub

安装

下载最新版,这里, 解压缩,将Assets目录里的所有内容复制到你的工程中,对于最终产品,可以删除Resourece,例子,文档等内容,只保留Plugins目录,如果是开发阶段则无所谓。

等待unity编译完毕,如果一切顺利的话,将出现slua菜单, 点击slua菜单中 All->Make 命令 手动生成针对当前版本的U3d接口文件。
SLua初学(一)_第1张图片
每次更新slua版本,务必记得clear all,然后make all,否则可能运行不正确

第一个SLua程序

1、Create Empty创建空物体。

2、编写C#脚本,并将脚本挂载在物体上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SLua;

public class hello : MonoBehaviour
{
    private static LuaState ls_state;
    // Start is called before the first frame update
    void Start()
    {
        ls_state = new LuaState();
        ls_state.doString("print(\"Hello Lua!\")");
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

3、运行程序

输出结果
SLua初学(一)_第2张图片

读取lua文件

1、Create Empty创建空物体。
2、编写C#脚本,并将脚本挂载在物体上

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

public delegate byte[] LuaReourcesFileLoader(string fn, ref string absoluteFn);
public class HelloLua : MonoBehaviour
{

    void Start()
    {
        LuaSvr svr = new LuaSvr();// 如果不先进行某个LuaSvr的初始化的话,下面的mianState会爆一个为null的错误..
        LuaSvr.mainState.loaderDelegate += LuaReourcesFileLoader;
        svr.init(null, () => // 如果不用init方法初始化的话,在Lua中是不能import的
        {
            svr.start("lua");
        });
    }

    // SLua Loader代理方法
    private static byte[] LuaReourcesFileLoader(string strFile,ref string fn)
    {
        // 这里为了测试就不先判断为空,开发的时候再加上
        string filename = Application.dataPath + "/Scripts/Lua/" + strFile.Replace('.', '/') + ".txt";
        return File.ReadAllBytes(filename);
    }
}

3、编写lua文件,将文件命名为lua.txt,将文件存放到项目\Assets\Scripts\Lua路径下

import "UnityEngine"

function main()
    print("Lua创建了一个Cube")
    local cube = GameObject.CreatePrimitive(PrimitiveType.Cube)
end

main()

4、运行结果
SLua初学(一)_第3张图片

你可能感兴趣的:(SLua初学(一))