Input.LocationService.isEnabledByUser在编辑器中使用Unity Remote返回false?

时间:2017-07-27 02:38:59

标签: c# android unity3d location

关于Stack-Overflow的第一篇文章,如果有人已经问过这个问题,我真诚地道歉,但我搜索了很多,找不到有类似问题的人。

所以我刚刚完成设置我的手机(三星Galaxy S8)与Unity Remote 5配合使用,并根据此处设置我的位置服务标识:https://docs.unity3d.com/ScriptReference/LocationService.Start.html

我的问题是脚本似乎无法通过!Input.location.isEnabledByUser if语句。

我启用了我的位置服务并且高精度位置已启用,我看到这是另一个线程中的问题。 Unity Remote 5正在我的手机上正确显示场景,但它似乎没有读取位置数据?

有人为此有任何解决方案吗? 如果在其他地方得到解答,或者我错过了一些令人难以置信的微不足道的事情,我再次道歉。

2 个答案:

答案 0 :(得分:1)

你的答案中的内容并不完全正确。

问题是代码的第一行:

if (!Input.location.isEnabledByUser)
    yield break;

单击编辑器中的“播放”时,Unity需要几秒钟才能连接到Unity Remote。在这几秒之前,Input.location.isEnabledByUserfalse并且yield break将会执行。

有两种方法可以解决这个问题:

1 。在该行代码之前添加延迟:

yield return new WaitForSeconds(3)

if (!Input.location.isEnabledByUser)
    yield break;

....

2 。使用EditorApplication.isRemoteConnected等待编辑器连接到Unity Remote,然后再继续。

你必须将它包装在Unity的Platform Dependent directive周围,以便它可以编译为独立构建,因为这个函数来自UnityEditor命名空间。

 #if UNITY_EDITOR
 //Wait until Unity connects to the Unity Remote, while not connected, yield return null
 while (!UnityEditor.EditorApplication.isRemoteConnected)
 {
     yield return null;
 }
 #endif

if (!Input.location.isEnabledByUser)
    yield break;

....

答案 1 :(得分:0)

好吧,所以我在这里没有注意到的有趣事实是,虽然Unity Remote 5将您的设备用作屏幕,但它实际上并不将您的设备视为移动设备。

这看起来真的很愚蠢,但是当我需要测试特定的移动设备xD时,我想我可以解决有时做完全导出的问题