这是unity代码裁剪引起的。你需要在主工程中显式带上类或者函数的使用,如RefTypes.cs所做的那样。
如果你是新使用huatuo的项目。建议将 huatuo_trail/Assets/Main/HuatuoLib 拷贝到你主工程, 然后再在RefTypes.cs里添加你要引用的类型。
这是因为没有为相应的函数添加对应的泛型实例化。 在Debug工程(如何debug请看源码跟踪与调试)中调试,查看函数名和类名。
这是il2cpp原始代码里面抛出的,原因是在编译之前没有替换huatuo源码中的libil2cpp目录
解决办法:
- 确定已经将了huatuo代码中的 libil2cpp 目录替换了对应的Editor 中的 libil2cpp 目录
- 删除Unity工程中的Library目录,重新构建即可
原因是你的huatuo太旧,未实现Load(byte[])这个函数。 拉最新的huatuo,替换你的libil2cpp,重新打包就行了
这是由于之前使用过旧代码编译导致的,Library 是旧的。只要删掉Library在重新打包就可以了
打包生成的C++工程中,依赖关系为:项目主工程(同unity项目名,当前启动项目)依赖Il2CppOutputProject,Il2CppOutputProject依赖UnityPlayerStub。但是生成的工程设置中并没有设置依赖,一般按照下面的设置就能解决:
- 编译UnityPlayerStub项目,遇到问题就修改项目设置里面的 Windows SDK Version 和 Platform Toolset
- 编译Il2CppOutputProject 项目
- 启动成功
原因是你使用了release编译,导致编译async时生成了值类型的状态机。在Unity Editor窗口最下面的状态栏,有一个臭虫按钮可以切换 Debug/Release,切换成Debug就可以了。
有两种原因
- 如果非ios平台,则因为未替换libil2cpp目录
- 如果ios平台,因为ios平台并不从源码编译libil2cpp,而是使用随Editor打包的libil2cpp.a,你需要替换libil2cpp.a为huatuo的编译版本。
因为你build了32位程序。 huatuo当前只支持64位。
原因是加载的HotFix.dll 是 .NET Standard 2.0生成的。从根本上解决这个问题可以参照下面步骤:
- 确定unity设置了 .NET 4.x
- 删除Library目录
- 拷贝Library\ScriptAssemblies\HotFix.dll 文件到 Assets\StreamingAssets目录
- 重新打包