XLua调用CSharp方法--DoString()
LuaEnv luaenv = new LuaEnv();
luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')");
luaenv.Dispose();
DoString还可以直接调用Lua
luaEnv.DoString("print('Hello world')");
XLua中自定义Loader
LuaEnv env = new LuaEnv();
env.AddLoader((ref string str) =>
{
string pt = "print(1234)";
return System.Text.Encoding.UTF8.GetBytes(pt);
});
env.DoString("require 'xxx'");
env.Dispose();
在DoString中调用require,默认回去走loader,然后加载到lua代码,并执行。
总结下来CSharp 调用lua就直接用DoString,然后Lua调用C#就直接CS.UnityEngine.....
感觉DoString就是lua解释器,并且还能作为C#解释器,能映射C#中一些函数,并做一些反射调用。
还有一个方法要记一下的:
IPerson p = env.Global.Get<IPerson>("person");
env.Global.Get 可以拿很多东西,包括Function,包括对象,如果这边是interface的话,就能直接改lua中的对象的值。
后面的学习都在看另一篇文章,地址:https://blog.csdn.net/kouzhuanjing1849/article/details/90415938
自己就不多写了,一起学习!