编辑代码

-- JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。

-- 001 执行lua程序
using XLua;
using System.IO;

public class LuaDemo01 : MonoBehaviour
{
    private LuaEnv luaenv;
    void Start()
    {
        luaenv = new LuaEnv();

        luaenv.DoString("Lua程序.lua");
        luaenv.DoString("print('Hello world!')");

        -- 在lua里调用C# 类
        luaenv.DoString("CS.UnityEngine.Debug.Log('Hello world')");

        --读取lua文件 lua 文件完整文件名需要 helloworld.lua.txt
        TextAsset ta = Resources.Load<TextAsset>("helloworld.lua");
        luaenv.Dostring(ta.text)

        -- 系统内置加载方式
        luaenv.Dostring("require 'helloworld'"); --loader,其中有一个loader会去寻找Resources文件夹里面的lua文件 

        -- 自定义loader lua文件放在自定义目录 而非Resources目录的情况下
        luaenv.AddLoader(MyLoader);
        luaenv.DoString("require 'test007'");
        
    }


    private byte[] MyLoader(ref string filePath)
    {
        string absPath = Application.streamingAssetsPath + "/" + filePath + ".lua.txt";
        return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPath));        
    }


    private void OnDestroy()
    {
        luaenv.Dispose();  -- 释放掉lua环境
    }


}