8.CSharp调用Lua-表映射到LuaTable
8.1 知识点
准备工作
初始化Lua管理器,创建Lua脚本并在C#脚本调用
LuaManager.Instance.Init();
LuaManager.Instance.Require("Lesson08_CSharp调用Lua_表映射到LuaTable");
给Lua脚本添加普通表
print('我是Lua脚本 Lesson08_CSharp调用Lua_表映射到LuaTable')
testClass = {
testInt = 6,
testBool = true,
testFloat = 6.66,
testString = "666",
testFun = function()
print("testFun 666666")
end,
testIntClass =
{
testIntClassInt = 999
},
}
表映射到LuaTable
//toLua中没有像xLua一样 表可以映射到类、接口 而是直接获取
//通过LuaState的GetTable方法获得Lua表
LuaTable testClass11 = LuaManager.Instance.LuaState.GetTable("testClass");
Debug.Log(testClass11["testInt"]);//6
Debug.Log(testClass11["testBool"]);//True
Debug.Log(testClass11["testFloat"]);//6.66
Debug.Log(testClass11["testString"]);//666
//修改C#中lua表的值也会修改Lua表的值 引用拷贝
testClass11["testInt"] = 66666;
LuaTable testClass12 = LuaManager.Instance.LuaState.GetTable("testClass");
Debug.Log(testClass12["testInt"]);//66666
//通过LuaState的中括号强转获得Lua表
LuaTable testClass2 = LuaManager.Instance.LuaState["testClass"] as LuaTable;
Debug.Log(testClass2["testInt"]);//66666
//LuaTable类中的GetLuaFunction方法 获取表中函数
LuaFunction testFun = testClass11.GetLuaFunction("testFun");
testFun.Call();//testFun 666666
//嵌套表的获取
LuaTable testIntClass = testClass11.GetTable<LuaTable>("testIntClass");
Debug.Log(testIntClass["testIntClassInt"]);//999
8.2 知识点代码
Lesson08_CSharp调用Lua_表映射到LuaTable.lua
print('我是Lua脚本 Lesson08_CSharp调用Lua_表映射到LuaTable')
testClass = {
testInt = 6,
testBool = true,
testFloat = 6.66,
testString = "666",
testFun = function()
print("testFun 666666")
end,
testIntClass =
{
testIntClassInt = 999
},
}
Lesson08_CSharp调用Lua_表映射到LuaTable
using LuaInterface;
using UnityEngine;
public class Lesson08_CSharp调用Lua_表映射到LuaTable : MonoBehaviour
{
void Start()
{
LuaManager.Instance.Init();
LuaManager.Instance.Require("Lesson08_CSharp调用Lua_表映射到LuaTable");
#region 知识点一 表的获取
//toLua中没有像xLua一样 表可以映射到类、接口 而是直接获取
//通过LuaState的GetTable方法获得Lua表
LuaTable testClass11 = LuaManager.Instance.LuaState.GetTable("testClass");
Debug.Log(testClass11["testInt"]);//6
Debug.Log(testClass11["testBool"]);//True
Debug.Log(testClass11["testFloat"]);//6.66
Debug.Log(testClass11["testString"]);//666
//修改C#中lua表的值也会修改Lua表的值 引用拷贝
testClass11["testInt"] = 66666;
LuaTable testClass12 = LuaManager.Instance.LuaState.GetTable("testClass");
Debug.Log(testClass12["testInt"]);//66666
//通过LuaState的中括号强转获得Lua表
LuaTable testClass2 = LuaManager.Instance.LuaState["testClass"] as LuaTable;
Debug.Log(testClass2["testInt"]);//66666
//LuaTable类中的GetLuaFunction方法 获取表中函数
LuaFunction testFun = testClass11.GetLuaFunction("testFun");
testFun.Call();//testFun 666666
//嵌套表的获取
LuaTable testIntClass = testClass11.GetTable<LuaTable>("testIntClass");
Debug.Log(testIntClass["testIntClassInt"]);//999
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com