关于Stack-Overflow的第一篇文章,如果有人已经问过这个问题,我真诚地道歉,但我搜索了很多,找不到有类似问题的人。
所以我刚刚完成设置我的手机(三星Galaxy S8)与Unity Remote 5配合使用,并根据此处设置我的位置服务标识:https://docs.unity3d.com/ScriptReference/LocationService.Start.html
我的问题是脚本似乎无法通过!Input.location.isEnabledByUser if语句。
我启用了我的位置服务并且高精度位置已启用,我看到这是另一个线程中的问题。 Unity Remote 5正在我的手机上正确显示场景,但它似乎没有读取位置数据?
有人为此有任何解决方案吗? 如果在其他地方得到解答,或者我错过了一些令人难以置信的微不足道的事情,我再次道歉。
答案 0 :(得分:1)
你的答案中的内容并不完全正确。
问题是代码的第一行:
if (!Input.location.isEnabledByUser)
yield break;
单击编辑器中的“播放”时,Unity需要几秒钟才能连接到Unity Remote。在这几秒之前,Input.location.isEnabledByUser
将false
并且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时,我想我可以解决有时做完全导出的问题