unity3d - 在 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 度角观看。诚然,这不是一个常见的用例(即使对于我自己的程序),但它是一个远非不可想象的用例,我的程序必须至少在某种程度上能够优雅地处理。
解决方案
推荐阅读
- powershell - 如何在 powershell Pro Tools 中为 LogonName 组合 FirstName 和 LastName?
- html - 即使在 min-height:100% 处也没有填写 Div;
- c - WinSock2 的带有 MSG_WAITALL 标志的 recv 返回不完整的数据包,没有错误
- c - 将 unsigned long 传递给使用 long 的函数是否不安全?
- python - 安装 BeatifulSoup 时显示错误
- javascript - 为什么 innerHTML 只给我 for 循环的最后一个值?
- r - read.delim 在 R 中没有这样的文件或目录
- html - 在 Angular 中使用掩码时 value 指令不绑定
- sql - 如何从 Athena SQL 查询中的 3 个表中获取所需的数据?
- javascript - Javascript 无法更新渐变