C#内映射lua表

都是通过同一个方法得到的

例如得到List

复制代码
List<int> list = LuaMgr.GetInstance().Global.Get<List<int>>("testList");

只要把Get的泛型换成对应的类型即可

得到Dictionnary

复制代码
Dictionary<string, int> dic2 = LuaMgr.GetInstance().Global.Get<Dictionary<string, int>>("testDic");

得到类

类里面的成员都必须是公有public的,而且成员名字要和lua脚本内的类相同

cs 复制代码
public class CallLuaClass
{
    //在这个类中去声明成员变量
    //名字一定要和 Lua那边的一样
    //公共 私有和保护 没办法赋值
    //这个自定义中的 变量 可以更多也可以更少
    //如果变量比 lua中的少 就会忽略它
    //如果变量比 lua中的多 不会赋值 也会忽略
    public int testInt;
    public bool testBool;
    public float testFloat;
    public float testString;
    public UnityAction testFun;

    public CallLuaInClass testInClass;
}

public class CallLuaInClass
{
    public int testInInt;
}

lua的类

Lua 复制代码
CallLuaClas = {
	testInt = 1,
	testBool = true,
	testFloat = 1.1,
	testString = "1",
    
    function testFun()
    	print("function")
    end,

    testInClass = {
    	testInInt = 5,
    }
}

映射类代码

cs 复制代码
CallLuaClass obj = LuaMgr.GetInstance().Global.Get<CallLuaClass>("testClas");

万能类LuaTable装表(不建议使用)

cs 复制代码
void Start()
    {
        LuaMgr.GetInstance().Init();
        LuaMgr.GetInstance().DoLuaFile("Main");

        //不建议使用LuaTable和LuaFunction 效率低
        //引用对象
        LuaTable table = LuaMgr.GetInstance().Global.Get<LuaTable>("testClas");
        Debug.Log(table.Get<int>("testInt"));
        Debug.Log(table.Get<bool>("testBool"));
        Debug.Log(table.Get<float>("testFloat"));
        Debug.Log(table.Get<string>("testString"));

        table.Get<LuaFunction>("testFun").Call();

        //改  引用
        table.Set("testInt", 55);

        //使用完要销毁
        table.Dispose();
    }

备注*

LuaMgr是自己写的一个Xlua管理器,他是单例模式管理器,里面定义了luaEnv并实例化。GetInstance方法是得到这个LuaMgr单例类的,Global返回了luaEnv内的_G表,其中_G自带Get方法得到对应表

相关推荐
蓝斯4974 小时前
[原创]《C#高级GDI+实战:从零开发一个流程图》第章:增加贝塞尔曲线,上、下、左、右连接点
java·c#·流程图
西门啐血12 小时前
上位机开发之假装有设备,使用 C# 模拟串口设备
开发语言·mongodb·c#
丙氨酸長鏈13 小时前
[Bukkit插件开发]手持发射器箭矢机枪 教学文档 面向Python/C#开发者入门Java与Bukkit API
java·python·c#
淡海水13 小时前
12-01-YooAsset工程化-Unity资源管理规范
unity·c#·游戏引擎·yooasset
脚踏实地皮皮晨14 小时前
003003001_Grid控件
开发语言·windows·算法·c#·visual studio
caishenzhibiao15 小时前
降雨带波段点差 同花顺期货通指标
java·c语言·c#
半夢半醒115 小时前
[原创]《C#高级GDI+实战:从零开发一个流程图》第章:增加菱形、平行四边形、圆角矩形,文本居中显示
算法·c#·流程图
蓝斯49718 小时前
C# 调用邮箱应用发送带附件的邮件
网络·c#·github
BuHuaX19 小时前
U3D抖微小游戏开发流程 (一)
unity·c#·游戏引擎·游戏策划