gpt4 book ai didi

c# - Unity 项目仅适用于 IL2CPP 上的开发构建

转载 作者:行者123 更新时间:2023-12-04 23:59:17 24 4
gpt4 key购买 nike

我有一个移动应用程序项目,它在 Android 上构建顺利且没有任何错误。但是当我尝试将它构建到 iOS 设备时,我在 Xcode 中收到此错误:

Unable to find internal function `UnityEngine.Jobs.TransformAccess::GetWorldToLocalMatrix`
Unity.Burst.BurstCompilerHelper:IsCompiledByBurst(Delegate)
Unity.Burst.BurstCompilerHelper:.cctor()
Unity.Burst.BurstCompiler:Compile(T, Boolean)
Unity.Entities.ComponentSystemGroup:.cctor()
Unity.Entities.InitializationSystemGroup:.ctor()
System.Reflection.MonoCMethod:InternalInvoke(Object, Object[])
System.Activator:CreateInstance(Type, Boolean)
Unity.Entities.TypeManager:ConstructSystem(Type)
Unity.Entities.World:CreateSystemInternal(Type)
Unity.Entities.World:GetOrCreateSystem()
Unity.Entities.DefaultWorldInitialization:AddSystemToRootLevelSystemGroupsInternal(World, IEnumerable`1, Int32)
Unity.Entities.DefaultWorldInitialization:Initialize(String, Boolean)
Unity.Entities.AutomaticWorldBootstrap:Initialize()

Unity 将项目构建到 Xcode 就好了,Xcode 似乎也将项目构建到设备,但是当它在设备上运行时,它会抛出此错误并崩溃......我试图在上查找不同的解决方案互联网和我找到了一些链接,但到目前为止这些都没有用:

https://forum.unity.com/threads/solved-unable-to-find-internal-function.777044/ https://forum.unity.com/threads/unable-to-find-internal-function-with-transport-library-on-ios.731471/

知道什么可能导致此错误吗?顺便说一句,我使用的是 Unity 2020.2.1f1

编辑 |更新如果我在启用“开发构建”的情况下构建项目,它可以在 IL2CPP Android 和 iOS 上正常运行。但是如果我取消选中 Development Build,它会像以前一样在 Android 和 iOS IL2CPP 构建上崩溃。奇怪的。关于这个的任何可能的信息?在 Android 上的 Mono 上构建相同的项目也能顺利进行……对我来说看起来像是代码剥离错误,我尝试了以下解决方案:

  • 禁用 strip 引擎代码
  • 更新作业和 Burst 包
  • 启用/禁用突发编译

到目前为止,这些都不起作用。 :(

我还在 assets 文件夹中添加了一个 link.xml 文件,它看起来像这样

    <linker>
<assembly fullname="Unity.Collections" preserve="all" />
<assembly fullname="Unity.Collections.Tests" preserve="all" />
<assembly fullname="Unity.Burst.Tests" preserve="all" />
<assembly fullname="Unity.Transforms" preserve="all" />
<assembly fullname="Unity.Transforms.Hybrid" preserve="all" />
<assembly fullname="Unity.Transforms.Tests" preserve="all" />
<assembly fullname="Unity.Jobs" preserve="all" />
<assembly fullname="Unity.Jobs.Tests" preserve="all" />
<assembly fullname="Unity.Burst" preserve="all" />
<assembly fullname="UnityEngine">
<type fullname="UnityEngine.*" preserve="all"/>
<type fullname="UnityEngine.Jobs.*" preserve="all"/>
<type fullname="UnityEngine.Jobs.TransformAccess.*" preserve="all"/>
</assembly>
</linker>

最佳答案

经过近一周的努力和大量调试,我发现了问题所在。简而言之,崩溃是由 Unity.Entities 0.17.0-preview.41 包引起的。 (引用 https://docs.unity3d.com/Packages/com.unity.entities@0.17/manual/index.html)

即使在 IL2CPP 脚本后端上构建了一个空项目 + 未选中开发构建并且安装了上述实体预览包,应用程序也会崩溃,您可能会遇到与我相同的错误。

我不知道这到底是不是代码剥离错误,但我发现了一件奇怪的事情,如果启用了实体预览包,它在脚本执行顺序中排在第一位(您可以在项目设置中检查)并且也许这导致了缺少内部功能的问题。 (因为Entities包依赖于UnityEngine.Jobs.TransformAccess,但是由于Entities包先执行,它还找不到Jobs,这是我的逻辑,但如果我错了请纠正我)

我仍然不确定为什么我一开始就安装了那个包,因为我什至没有在这个项目中使用它,所以删除它解决了我所有的问题,项目现在运行顺利。也许这会帮助将来遇到类似问题的人。作为结论,我只能说:

  1. 谨慎使用预览包。
  2. 在解决此问题之前,不要使用 Unity.Entities 预览包。

关于c# - Unity 项目仅适用于 IL2CPP 上的开发构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67515444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com