2017-07-27 15 views
0

Stack-Overflow的第一篇文章,我真诚地道歉,如果有人已经问过这个问题,但我搜索了很多,并找不到任何人有类似的问题。Input.LocationService.isEnabledByUser在编辑器中用Unity Remote返回false?

所以我刚刚完成设置我的手机(三星Galaxy S8)使用Unity远程5的工作,和我建立了我的位置服务的识别依据的一个位置:https://docs.unity3d.com/ScriptReference/LocationService.Start.html

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

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

有没有人有这种解决方案? 我再次道歉,如果这是在别处回答,或者如果我失去了一些令人难以置信的微不足道的东西。

回答

0

你在你的答案是什么并不完全正确。

的问题是代码的这第一行:

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

当你在编辑器中单击播放,团结需要几秒钟就可以连接到远程统一。在这几秒钟之前,Input.location.isEnabledByUser将会执行falseyield break

有两种可能的方法来解决这个问题:

。新增该行的代码之前的延迟:

yield return new WaitForSeconds(3) 

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

.... 

。用EditorApplication.isRemoteConnected等待Editor连接继续前进到Unity Remote。

您还必须将其包装在Unity的Platform Dependent directive中,以便它可以编译为独立构建,因为此函数来自UnityEditor名称空间。

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

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

.... 
0

好了,有趣的是,我没有在这里看到的是,虽然统一远程5使用的设备作为屏幕,它实际上并没有把你的设备作为移动设备。

这看起来很愚蠢,但我想我可以用,有时做了充分的出口积累,当我需要测试特定的移动解决事情由xD