Unity3D MARS 地理围栏代理条件未在物理设备上生成

问题描述

我正在使用地理围栏条件。

我最初生成了无限数量的水平平面,并附加了一个包含语义标签的合成对象组件。

然后我在运行时根据数据库中的数据多次实例化一个 Prefab。

每个实例化的对象都有自己的边界框,指定了唯一的纬度/经度。

纬度/经度设置为小数点后五位。纬度/经度范围设置为 1e-04

这在模拟器中一切正常,使用我当前的 GPS 位置作为模拟中心。

但是,它在部署到物理设备时不起作用:Android 11、Pixel 3 XL

我尝试过不同的范围。

有关信息,我正在请求 FineLocation 的许可。这部分似乎可以正常工作,因为我可以将设备的纬度/经度打印到屏幕上。

但是,根本没有地理围栏对象出现。

当我删除地理围栏条件时,对象会正确生成

我已经尝试过禁用条件,然后在按照我在旧线程中看到的建议配置后在运行时启用它。

我正在使用 Unity 2020.3.11f1

enter image description here

var geoFenceCondition = myPrefab.GetComponent<GeoFenceCondition>();
     
            var boundingBox= new GeographicBoundingBox
            {
                center = new GeographicCoordinate(46.34040,5.07097),latitudeExtents = 1e-04,longitudeExtents = 1e-04,};
     
            geoFenceCondition.BoundingBox=boundingBox;

解决方法

来自 Unity Technologies 的支持联系人能够帮助解决此问题,因此我将在此处分享解决方案。

因为 MARS db 以最佳格式拥有自己的各种条件数据的副本,并且由于条件检查在后台线程上运行以提高性能,所以每当对运行时的条件。

“调用 SyncModifications() 通知查询数据库更改并安排“修改”更改操作。修改更改可能需要几帧才能被接收,因为数据库查询调度线程与主线程间歇性同步通过动作缓冲区。”

更多信息:

https://docs.unity3d.com/Packages/com.unity.mars@1.3/api/Unity.MARS.Proxy.html

https://docs.unity3d.com/Packages/com.unity.mars@1.3/api/Unity.MARS.ProxyGroup.html

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...