xLua教程:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/XLua%E6%95%99%E7%A8%8B.md
xLua配置:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/configure.md
FAQ:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/faq.md
开始学习
private LuaEnv luaenv;// Start is called before the first frame updatevoid Start(){luaenv = new LuaEnv();luaenv.DoString("print('Hello World!')");}private void OnDestroy(){luaenv.Dispose();}
在lua中调用C#中的方法
luaenv.DoString("CS.UnityEngine.Debug.Log('Hello World!')");
加载运行Lua源文件
在Resources文件夹中建一个 helloworld.lua.txt 文件
里面写着lua 程序
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;public class helloworld02 : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){TextAsset textAsset = Resources.Load<TextAsset>("helloworld.lua");LuaEnv luaEnv = new LuaEnv();luaEnv.DoString(textAsset.ToString());luaEnv.Dispose();}
通过内置的 loader 加载lua 源文件
luaenv.DoString(" require 'helloworld'"); //loader 会直接执行里面的代码
添加自定义的 loader 方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;public class defineloader03 : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){LuaEnv env = new LuaEnv();env.AddLoader(MyLoader);env.DoString("require 'helloworld'");env.Dispose();}private byte[] MyLoader(ref string filepath){print(filepath);string s = "print(123)";// 将字符串转成字节数组return System.Text.Encoding.UTF8.GetBytes(s);}
require 会将路径传递给每一个 loader 去执行,直到找到或者确定完全找不到为止(报异常)