8.C#把Lua表映射到LuaTable

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

×

喜欢就点赞,疼爱就打赏