在团结应用程序中,我启动位置服务
Input.location.Start(0,0); //tried various other values and default
然后继续轮询它
Input.location.lastData
并检查时间戳与最后一个位置的时间戳,以查看更改。 Unity自动请求精确的位置访问,清单似乎很好。
问题是该位置很少更新。可以是多个公里的移动和新位置之间的分钟时间。如果我然后开始使用gps的谷歌地图导航,我的应用程序将非常频繁地获得新的gps位置,如预期的那样。
似乎Unity并没有真正开启gps,但除了开始,轮询和拥有适当的清单之外,我还没有看到我还能做些什么。
这个最小的例子显示了缓慢的更新。仅使用ui文本且运行此行为的应用程序将显示gps位置很少更新,除非某些其他应用程序(例如Google地图导航)使用gps。
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public UnityEngine.UI.Text Info;
void Start()
{
Input.location.Start(0.1f, 0.1f);
}
void Update()
{
Info.text =
Input.location.status.ToString() + System.Environment.NewLine +
Input.location.lastData.timestamp.ToString();
}
}
作为参考,找到了解决方案,这是愚蠢的:用wifi关闭“改善”位置。
在谷歌位置准确性下方的设置/ locationaccess下,关闭“使用wifi使位置更准确”。
虽然在最小的移动之后我询问了准确的位置和更新,显然这个更准确的位置,补充了wifi,导致它不更新。
这是相当倒退,因为它显然意味着它只会使用wifi,当你允许它改善wifi的位置,而不是预期使用GPS和WiFi。
关闭此功能后,我会按预期频繁更新。
如果这是一个统一或与android的问题,这是不清楚的,但它肯定是一个问题,虽然是一个可修复的问题,只要你知道它。