找回密码
 立即注册
查看: 191|回复: 0

XLua官方文档 Xlua特性

[复制链接]
发表于 2021-8-13 09:20 | 显示全部楼层 |阅读模式
特性

总体

    Lua虚拟机支持Lua5.3Luajit2.1Unity3D版本支持
    各版本均支持平台支持
    windows 64/32
    android
    ios 64/32/bitcode
    osx
    uwp
    webgl互访技术生成适配代码反射易用性解压即可用开发期无需生成代码生成代码和反射间可无缝切换更简单的无GC api菜单简单易懂配置可以多份,按模块划分,也可以直接在目标类型上打Attribute标签自动生成link.xml防止代码剪裁Plugins部分采用cmake编译,更简单核心代码不依赖生成代码,可以随时删除生成目录性能Lazyload技术,避免用不上的类型的开销lua函数映射到c# delegate,lua table映射到interface,可实现接口层面无C# gc alloc开销所有基本值类型,所有枚举,字段都是值类型的struct,在Lua和C#间传递无C# gc allocLuaTable,LuaFunction提供无gc访问接口通过代码生成期的静态分析,生成最优代码支持C#和Lua间指针传递自动解除已经Destroy的UnityEngine.Object的引用扩展性不用改代码就可以加入Lua第三方扩展生成引擎提供接口做二次开发
支持为如下C#实现打补丁

    构造函数析构函数成员函数静态函数泛化函数操作符重载成员属性静态属性事件
Lua代码加载

    加载字符串支持加载后立即执行支持加载后返回一个delegate或者LuaFunction,调用delegate或者LuaFunction后可传脚本参数Resources目录的文件直接require自定义loaderLua里头require时触发require参数透传给loader,loader读取Lua代码返回Lua原有的方式Lua原有的方式都保留
Lua调用C#

    创建C#对象C#静态属性,字段C#静态方法C#成员属性,字段C#成员方法C#继承子类对象可以直接调用父类的方法,访问父类属性子类模块可以直接调用父类的静态方法,静态属性扩展方法(Extension methods)就像普通成员方法一样使用参数的输入输出属性(out,ref)out对应一个lua返回值ref对应一个lua参数以及一个lua返回值函数重载支持重载由于lua数据类型远比C#要少,会出现无法判断的情况,可通过扩展方法来来调用。操作符重载支持的操作符:+,-,*,/,==,一元-,<,<=, %,[]其它操作符可以借助扩展方法调用参数默认值C#参数有默认值,在lua可以不传可变参数在对应可变参数部分,直接输入一个个参数即可,不需要把这些参数扩到一个数组里头泛化方法调用静态方法可以自行封装使用成员函数可通过扩展方法封装使用枚举类型数字或字符串到枚举的转换delegate调用一个C# delegate+操作符-操作符把一个lua函数作为一个c# delegate传递给c#event增加事件回调移除事件回调64位整数传递无gc而且无精度损失lua53下使用原生64位支持可以和number运算以java的方式支持无符号64位整数table的自动转换到C#复杂类型obj.complexField = {a = 1, b = {c = 1}},obj是一个C#对象,complexField是两层嵌套的struct或者classtypeof对应C#的typeof操作符,返回Type对象lua侧直接clonedecimal传递无gc而且无精度损失
C#调用Lua

    调用Lua函数以delegate方式调用Lua函数以LuaFunction调用lua函数访问Lua的tableLuaTable的泛化Get/Set接口,调用无gc,可指明Key,Value的类型用标注了CSharpCallLua的interface访问值拷贝到struct,class
Lua虚拟机

    虚拟机gc参数读取及设置
工具链

    Lua Profiler可根据函数调用总时长,平均每次调用时长,调用次数排序显示lua函数名及其所在文件的名字及行号如果C#函数,会显示这个是C#函数支持真机调试
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 09:59 , Processed in 0.092864 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表