uplev xlua

This commit is contained in:
2020-08-05 07:08:47 +08:00
parent 52cc2a59aa
commit b3f98bfda1
298 changed files with 444 additions and 250 deletions

25
Assets/XLua/CHANGELOG.txt Executable file → Normal file
View File

@@ -1,4 +1,27 @@
v2.1.14 2019年2月27
v2.1.15 2020年6月24
新增特性
1、生成代码过滤器
2、优化反射查找delegate匹配bridge的性能
3、unity 2019.2以上版本手机版本注入不了的问题
变更
bug修复
1、反射查找同名delegate桥接在不生成代码的时候表现不一致
2、嵌套struct标注为PackAsTable时生成代码报错
3、反射wrap代码加入栈空间检查
4、如果枚举定义了很多个值几千个会触发unity在android下的一个bug函数体很大而且有很多分支执行该函数会crash
5、chunkname和脚本文件名不一致的问题
6、最小生成模式枚举生成代码报错
7、当采用反射方式注册枚举值时如果一个枚举有多个相同的值比如A,B都是1那么在lua里头访问B将会为空
8、sbyte[]在.net 4下push到lua变成字符串的问题
9、泛型导致生成代码失败的问题
10、非Assembly-CSharp程序集注入时out参数处理有误
11、内嵌类通过xlua.private_accessible设置私有访问可能失败的问题
12、cecil插入指令后并未自动更新offset某种情况下会导致计算偏移量错误
v2.1.14 2019年2月27日
新增特性
1、新增nintento switch的支持
2、unity 2018兼容

0
Assets/XLua/CHANGELOG.txt.meta Executable file → Normal file
View File

0
Assets/XLua/Doc.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/Add_Remove_Lua_Lib.md Executable file → Normal file
View File

0
Assets/XLua/Doc/Add_Remove_Lua_Lib.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/Configure_EN.md Executable file → Normal file
View File

0
Assets/XLua/Doc/Configure_EN.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/Custom_Generate_EN.md Executable file → Normal file
View File

0
Assets/XLua/Doc/Custom_Generate_EN.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/Faq_EN.md Executable file → Normal file
View File

0
Assets/XLua/Doc/Faq_EN.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/Hotfix_EN.md Executable file → Normal file
View File

0
Assets/XLua/Doc/Hotfix_EN.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/Materials.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/Materials/logo.mat.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua_API.doc Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua_API.doc.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua_API.md Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua_API.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua_API_EN.md Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua_API_EN.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua_Tutorial_EN.md Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua_Tutorial_EN.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua增加删除第三方lua库.doc Executable file → Normal file
View File

View File

0
Assets/XLua/Doc/XLua增加删除第三方lua库.md Executable file → Normal file
View File

View File

View File

View File

View File

View File

0
Assets/XLua/Doc/XLua性能分析工具.doc Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua性能分析工具.doc.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua性能分析工具.md Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua性能分析工具.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua教程.doc Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua教程.doc.meta Executable file → Normal file
View File

2
Assets/XLua/Doc/XLua教程.md Executable file → Normal file
View File

@@ -243,7 +243,7 @@ C#的delegate调用和调用普通lua函数一样
##### 64位整数支持
Lua53版本64位整数longulong映射到原生的64整数而luajit版本相当于lua5.1的标准本身不支持64位xlua做了个64位支持的扩展库C#的long和ulong都将映射到userdata
Lua53版本64位整数longulong映射到原生的64整数而luajit版本相当于lua5.1的标准本身不支持64位xlua做了个64位支持的扩展库C#的long和ulong都将映射到userdata
支持在lua里头进行64位的运算比较打印

0
Assets/XLua/Doc/XLua教程.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua的配置.doc Executable file → Normal file
View File

0
Assets/XLua/Doc/XLua的配置.doc.meta Executable file → Normal file
View File

2
Assets/XLua/Doc/compatible_bytecode.md Executable file → Normal file
View File

@@ -30,7 +30,7 @@ pause
## 2、编译能生成兼容格式的luac后续只能用这特定的luac和步骤1的Plugins配套使用
到[这里](build/luac/)如果你想编译window版本的执行make_win64.bat如果你要编译mac或者linux的用make_unix.sh
到[这里](../../../build/luac/)如果你想编译window版本的执行make_win64.bat如果你要编译mac或者linux的用make_unix.sh
## 3、加载字节码

0
Assets/XLua/Doc/compatible_bytecode.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/configure.md Executable file → Normal file
View File

0
Assets/XLua/Doc/configure.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/custom_generate.md Executable file → Normal file
View File

0
Assets/XLua/Doc/custom_generate.md.meta Executable file → Normal file
View File

4
Assets/XLua/Doc/faq.md Executable file → Normal file
View File

@@ -34,7 +34,7 @@ il2cpp默认会对诸如引擎、c#系统api第三方dll等等进行代码剪
解决办法增加引用比如配置到LuaCallCSharp或者你自己C#代码增加那函数的访问或者通过link.xml配置当配置了ReflectionUse后xlua会自动帮你配置到link.xml告诉il2cpp别剪裁某类型。
## Unity 2018兼容性问题解决
## Unity 2018及以上版本兼容性问题解决
2.1.14前的版本都建议先升级到2.1.14,升级后,还有如下两个使用注意事项:
@@ -52,7 +52,7 @@ il2cpp默认会对诸如引擎、c#系统api第三方dll等等进行代码剪
编译链接的是unity安装目录\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\mscorlib.dll
解决办法:2.1.14支持外部mono环境安装个Unity2017然后把Unity2017安装目录下的MonoBleedingEdge目录拷贝到工程目录下的Tools目录下即可
解决办法:用黑名单排除报错方法即可。不过2019年8月6号以前的版本的黑名单配置对泛型不友好要一个个泛型实例的配置比如Dictionary<int, int>和Dictionary<float, int>要分别配置而目前发现该问题主要出在泛型Dictionary上。可以更新到2019年8月6号之后的版本该版本支持配置一个过滤器对泛型方法过滤。这里有对unity 2018的Dictionary的[针对性配置](https://github.com/Tencent/xLua/blob/master/Assets/XLua/Editor/ExampleConfig.cs#L277)直接拷贝使用如果碰到其它泛型也有多出来的方法参考Dictionary进行配置
## Plugins源码在哪里可以找到怎么使用

0
Assets/XLua/Doc/faq.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/features.md Executable file → Normal file
View File

0
Assets/XLua/Doc/features.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/hotfix.md Executable file → Normal file
View File

0
Assets/XLua/Doc/hotfix.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/logo.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

0
Assets/XLua/Doc/logo.png.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/signature.md Executable file → Normal file
View File

0
Assets/XLua/Doc/signature.md.meta Executable file → Normal file
View File

0
Assets/XLua/Doc/xLua.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

0
Assets/XLua/Doc/xLua.png.meta Executable file → Normal file
View File

0
Assets/XLua/Editor.meta Executable file → Normal file
View File

39
Assets/XLua/Editor/ExampleConfig.cs Executable file → Normal file
View File

@@ -131,7 +131,7 @@ public static class ExampleConfig
// }
// }
// }
// return delegate_types.Distinct().ToList();
// return delegate_types.Where(t => t.BaseType == typeof(MulticastDelegate) && !hasGenericParameter(t) && !delegateHasEditorRef(t)).Distinct().ToList();
// }
//}
//--------------end 纯lua编程配置参考----------------------------
@@ -142,9 +142,9 @@ public static class ExampleConfig
//{
// get
// {
// return (from type in Assembly.Load("Assembly-CSharp").GetExportedTypes()
// where type.Namespace == null || !type.Namespace.StartsWith("XLua")
// select type);
// return (from type in Assembly.Load("Assembly-CSharp").GetTypes()
// where type.Namespace == null || !type.Namespace.StartsWith("XLua")
// select type);
// }
//}
//--------------begin 热补丁自动化配置-------------------------
@@ -273,4 +273,35 @@ public static class ExampleConfig
new List<string>(){"System.IO.DirectoryInfo", "Create", "System.Security.AccessControl.DirectorySecurity"},
new List<string>(){"UnityEngine.MonoBehaviour", "runInEditMode"},
};
#if UNITY_2018_1_OR_NEWER
[BlackList]
public static Func<MemberInfo, bool> MethodFilter = (memberInfo) =>
{
if (memberInfo.DeclaringType.IsGenericType && memberInfo.DeclaringType.GetGenericTypeDefinition() == typeof(Dictionary<,>))
{
if (memberInfo.MemberType == MemberTypes.Constructor)
{
ConstructorInfo constructorInfo = memberInfo as ConstructorInfo;
var parameterInfos = constructorInfo.GetParameters();
if (parameterInfos.Length > 0)
{
if (typeof(System.Collections.IEnumerable).IsAssignableFrom(parameterInfos[0].ParameterType))
{
return true;
}
}
}
else if (memberInfo.MemberType == MemberTypes.Method)
{
var methodInfo = memberInfo as MethodInfo;
if (methodInfo.Name == "TryAdd" || methodInfo.Name == "Remove" && methodInfo.GetParameters().Length == 2)
{
return true;
}
}
}
return false;
};
#endif
}

0
Assets/XLua/Editor/ExampleConfig.cs.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/Android.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/Android/libs.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/Android/libs/arm64-v8a.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/Android/libs/arm64-v8a/libxlua.so Executable file → Normal file
View File

View File

0
Assets/XLua/Plugins/Android/libs/armeabi-v7a.meta Executable file → Normal file
View File

View File

View File

0
Assets/XLua/Plugins/Android/libs/x86.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/Android/libs/x86/libxlua.so Executable file → Normal file
View File

0
Assets/XLua/Plugins/Android/libs/x86/libxlua.so.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA/ARM.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA/ARM/xlua.dll Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA/ARM/xlua.dll.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA/x64.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA/x64/xlua.dll Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA/x64/xlua.dll.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA/x86.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA/x86/xlua.dll Executable file → Normal file
View File

0
Assets/XLua/Plugins/WSA/x86/xlua.dll.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/WebGL.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/WebGL/xlua_webgl.cpp Executable file → Normal file
View File

0
Assets/XLua/Plugins/WebGL/xlua_webgl.cpp.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/iOS.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/iOS/HotfixFlags.cpp Executable file → Normal file
View File

0
Assets/XLua/Plugins/iOS/HotfixFlags.cpp.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/iOS/libxlua.a Executable file → Normal file
View File

0
Assets/XLua/Plugins/iOS/libxlua.a.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/x86.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/x86/libxlua.so Executable file → Normal file
View File

0
Assets/XLua/Plugins/x86/libxlua.so.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/x86/xlua.dll Executable file → Normal file
View File

0
Assets/XLua/Plugins/x86/xlua.dll.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/x86_64.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/x86_64/libxlua.so Executable file → Normal file
View File

0
Assets/XLua/Plugins/x86_64/libxlua.so.meta Executable file → Normal file
View File

0
Assets/XLua/Plugins/x86_64/xlua.dll Executable file → Normal file
View File

Some files were not shown because too many files have changed in this diff Show More