XLua框架 v2.1.16官方版

XLua框架 v2.1.16官方版

  • 版本: v2.1.16官方版
  • 分类:其它插件
  • 大小: 10.7M
  • 时间:2022-12-11
  • 软件介绍
  • 软件截图
介绍

XLua框架是腾讯研发的Lua开源插件,xLua为Unity、 .Net、 Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用。

插件特性

  总体

  Lua虚拟机支持

  Lua5.3

  Luajit2.1

  Unity3D版本支持

  各版本均支持

  平台支持

  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 alloc

  LuaTable,LuaFunction提供无gc访问接口

  通过代码生成期的静态分析,生成最优代码

  支持C#和Lua间指针传递

  自动解除已经Destroy的UnityEngine.Object的引用

  扩展性

  不用改代码就可以加入Lua第三方扩展

  生成引擎提供接口做二次开发

  支持为如下C#实现打补丁

  构造函数

  析构函数

  成员函数

  静态函数

  泛化函数

  操作符重载

  成员属性

  静态属性

  事件

  Lua代码加载

  加载字符串

  支持加载后立即执行

  支持加载后返回一个delegate或者LuaFunction,调用delegate或者LuaFunction后可传脚本参数

  Resources目录的文件

  直接require

  自定义loader

  Lua里头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或者class

  typeof

  对应C#的typeof操作符,返回Type对象

  lua侧直接clone

  decimal

  传递无gc而且无精度损失

  C#调用Lua

  调用Lua函数

  以delegate方式调用Lua函数

  以LuaFunction调用lua函数

  访问Lua的table

  LuaTable的泛化Get/Set接口,调用无gc,可指明Key,Value的类型

  用标注了CSharpCallLua的interface访问

  值拷贝到struct,class

  Lua虚拟机

  虚拟机gc参数读取及设置

  工具链

  Lua Profiler

  可根据函数调用总时长,平均每次调用时长,调用次数排序

  显示lua函数名及其所在文件的名字及行号

  如果C#函数,会显示这个是C#函数

  支持真机调试

XLua框架插件特性

  总体

  Lua虚拟机支持

  Lua5.3

  Luajit2.1

  Unity3D版本支持

  各版本均支持

  平台支持

  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 alloc

  LuaTable,LuaFunction提供无gc访问接口

  通过代码生成期的静态分析,生成最优代码

  支持C#和Lua间指针传递

  自动解除已经Destroy的UnityEngine.Object的引用

  扩展性

  不用改代码就可以加入Lua第三方扩展

  生成引擎提供接口做二次开发

  支持为如下C#实现打补丁

  构造函数

  析构函数

  成员函数

  静态函数

  泛化函数

  操作符重载

  成员属性

  静态属性

  事件

  Lua代码加载

  加载字符串

  支持加载后立即执行

  支持加载后返回一个delegate或者LuaFunction,调用delegate或者LuaFunction后可传脚本参数

  Resources目录的文件

  直接require

  自定义loader

  Lua里头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或者class

  typeof

  对应C#的typeof操作符,返回Type对象

  lua侧直接clone

  decimal

  传递无gc而且无精度损失

  C#调用Lua

  调用Lua函数

  以delegate方式调用Lua函数

  以LuaFunction调用lua函数

  访问Lua的table

  LuaTable的泛化Get/Set接口,调用无gc,可指明Key,Value的类型

  用标注了CSharpCallLua的interface访问

  值拷贝到struct,class

  Lua虚拟机

  虚拟机gc参数读取及设置

  工具链

  Lua Profiler

  可根据函数调用总时长,平均每次调用时长,调用次数排序

  显示lua函数名及其所在文件的名字及行号

  如果C#函数,会显示这个是C#函数

  支持真机调试

展开
软件截图