Skip to content

v2.1.7

Compare
Choose a tag to compare
@chexiongsheng chexiongsheng released this 17 May 02:30
· 694 commits to master since this release

安装说明

  • xlua_v2.1.7.zip是lua53版本(Unity)
  • xlua_v2.1.7_luajit.zip是luajit版本(Unity)
  • xlua_v2.1.7_general.zip是通用版本(非Unity)

新增特性

  • 1、支持发布UWP(含HoloLens,Xbox one,Win10 Mobile、Win10 PC)应用;
  • 2、支持对lua源代码ras+sha1签名;
  • 3、如果没安装Tools提示“please install the Tools”;
  • 4、linxu版本的支持;
  • 5、支持bitcode打包;
  • 6、对所有struct新增无参数构造函数;
  • 7、delegate的参数名改为p0到pn,防止hotfix时业务代码变量和生成代码冲突;
  • 8、支持对成员名为C#关键字的情况;
  • 9、新增util.loadpackage,和require类似,通过searcher加载文件,不同的是,它不执行,而且也不会cache到package.loaded;
  • 10、优化模版引擎大文件的生成性能;
  • 11、新增不需要生成代码的注入方式;
  • 12、支持构造函数参数带ref和out修饰符;
  • 13、构造函数也支持黑名单排除;

变更

  • 1、this[object field]操作符重载;
  • 2、反射的数据转换规则改成和生成代码一致;
  • 3、忽略掉匿名类及匿名函数的注入;

bug修复

  • 1、规避Unity的bug:List,CustomType是当前执行程序集的类型,这在.Net是不需要指明程序集就可以通过Type.GetType得到,但Unity下不行。
  • 2、解决反射下,可变参数不提供时,传null的问题;
  • 3、继承了另外一个程序集的类型,使用了protected类型会导致注入失败;
  • 4、luajit去掉dlopen和dlsym的调用;
  • 5、解决通用版本的生成代码工具找不到模版的问题;
  • 6、修复通用版本反射导入泛化类型的问题;
  • 7、反射调用含delegate参数的的api,会因为缓存而导致调用LuaEnv.Dispose失败;
  • 8、兼容老版本的C编译器,声明要放开头;
  • 9、生成代码对hotfix的检测算法和注入工具不一致导致的注入失败;
  • 10、注入的nested类型是public,但其的外层类型非public,生成代码报错;
  • 11、析构函数只判断名字可能出现误判;
  • 12、构造函数是非public的,可能会导致找不到适配delegate而注入失败;
  • 13、修正Extension method会在所有子类都生成代码的bug(2.1.6泛化特性引入);
  • 14、构造函数重载,只有一个能hotfix成功;
  • 15、规避一个可能是il2cpp的bug(unity5.4):字符串参数默认值是"",ios下在反射的default value也是Reflection.Missing;
  • 16、将一个table传到List<>,取了最后一个参数,而不是那个table的长度;
  • 17、ldarg指令在这种场景下il2cpp转换时会出现异常:1、采用模版注入;2、从4到255间有一个输出参数;改为兼容性更好的ldarg.s;
  • 18、解决配置了System.Delegate到CSCallLua,执行生成代码会编辑器会crash的问题;
  • 19、扩展函数可能和原来的函数同名,反射实现并未考虑到这种情况;
  • 20、通用版本的可变参数delegate调用异常;
  • 21、unity4规避lua53冲突的方式改为返回null更合适,异常方式会导致IsNull无法正常工作;
  • 22、lua_tostring解码失败改为UTF8解码;