使用例子1

Instance().GetLuaEnv().DoString("return collectgarbage('count')")[0]); //LuaEnv.cs public object[] DoString(byte[] chunk, string chunkName = "chunk", LuaTable env = null) { //...... if (LuaAPI.lua_pcall(_L, 0, -1, errFunc) == 0) { LuaAPI.lua_remove(_L, errFunc); return translator.popValues(_L, oldTop); } //...... } //ObjectTranslator.cs internal object[] popValues(RealStatePtr L,int oldTop) { //... ArrayList returnValues=new ArrayList(); for(int i=oldTop+1;i<=newTop;i++) { returnValues.Add(GetObject(L,i)); } //... } internal object GetObject(RealStatePtr L,int index) { return (objectCasters.GetCaster(typeof(object))(L, index, null)); }
其实简单来说就是lua层的未知的值传给C#,C#需要把Lua栈种的值转为C#类型