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
自己就不多寫了,一起學習!