首页 > 解决方案 > 在 Unity 应用程序中使用 Mapbox,无需在启动时挂起 Unity 和编辑器

问题描述

我有一个 Unity 应用程序,它或多或少是 Mapbox Unity SDK .unitypackage 中的 Mapbox“ZoomableMap”示例和我自己的代码(C#,附加到一个空的 GameObject)的集合。

当我在 Unity 编辑器中点击“播放”时,当 Mapbox 被禁用时,我的代码需要大约 2 秒来初始化(通过在“检查器”窗格中取消选中与 Mapbox 相关的所有内容来禁用它们)。

如果我启用 Mapbox 对象(启用或不启用我自己的对象),Unity 编辑器会在地图出现之前挂起大约 30-70 秒,并且一切正常运行(通常约为 15-80fps)。大约 5-10% 的时间,它会在初始化时进入死循环,超过 95% 的内存利用率(我有 16gb),然后只是颠簸(Unity 编辑器 UI 仍然完全没有响应),直到发生以下两种情况之一: Unity 编辑器崩溃并出现错误,提示视频卡内存不足(以及指向 nvidia 页面的无用链接,除了“如果内存不足,程序将崩溃。”之外基本上没有其他内容),或者我我会厌倦等待不可避免的崩溃并在 2-3 分钟后使用 Windows 任务管理器杀死 Unity。

有什么方法可以使 Mapbox 初始化更加优雅和线程/后台友好,以便我的代码可以在 Mapbox 礼貌地在后台进行初始化和后续更新时立即运行和执行(不冻结 Unity Editor 的 UI 或我自己的程序的执行)?

Details: 
    Unity 2018.1.6f1-MLTP7 (from the MagicLeap SDK)
    mapbox-unity-sdk_v1.4.5.unitypackage

注意:我可以发布更多详细信息,我只是不完全确定如何描述由 Inspector 窗格中具有数百个设置的主要样板库项目组成的东西...... Unity 是否有“转储纯文本(或 Markdown-friendly ) 表示对象的整个 Inspector 层次结构及其当前值,以便于发布到 StackOverflow”函数隐藏在某处?

注意 2:这显然是 Mapbox-Unity 的一个已知问题(https://github.com/mapbox/mapbox-unity-sdk/issues/262)。试图追踪一个包含更改以改进其线程的较新版本(有人几乎在一年前提交了一个补丁来解决这个问题,但同时该补丁似乎已经消失了)。

注 3:这张地图无疑是巨大的……基本上,整个佛罗里达州北部、乔治亚州、阿拉巴马州和南卡罗来纳州,从墨西哥湾上方约 50 公里的朝北有利位置以 45 度角观看。诚然,这不是一个常见的用例(即使对于我自己的程序),但它是一个远非不可想象的用例,我的程序必须至少在某种程度上能够优雅地处理。

标签: unity3dmapboxmapbox-unity

解决方案


推荐阅读