【发布时间】:2017-07-02 20:55:53
【问题描述】:
所以我有以下代码:
LongLat[0] = Convert.ToDouble(Input.location.lastData.latitude);
LongLat[1] = Convert.ToDouble(Input.location.lastData.longitude);
if (Input.location.status == LocationServiceStatus.Running) { print("Running"); }
print(LongLat[0]);
我将 LongLat 定义为公共数组:
public double[] LongLat = new double[2];
当我在统一编辑器中运行它时,我没有任何问题(稍后我重新定义了 LongLat,因为显然电脑没有 GPS)。但是当我在 android 上构建和运行时,我在第四行 print(LongLat[0]) 上得到一个 NullReferenceException,我不清楚为什么会这样。
定位服务正在运行。
这是来自 adb 的输出。
07-02 23:48:37.409 20555 20570 I Unity : NullReferenceException: Object reference not set to an instance of an object
07-02 23:48:37.409 20555 20570 I Unity : at Location.GetLocation () [0x00065] in F:\Dropbox\Dropbox\UnityGames\Tagger\Assets\Location.cs:205
07-02 23:48:37.409 20555 20570 I Unity : at Location+<Start>c__Iterator0.MoveNext () [0x00233] in F:\Dropbox\Dropbox\UnityGames\Tagger\Assets\Location.cs:82
07-02 23:48:37.409 20555 20570 I Unity : at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) [0x00028] in /Users/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17
如果我注释掉
LongLat[0] = Input.location.lastData.latitude;
LongLat[1] = Input.location.lastData.longitude;
并使用:
LongLat[0] = 55.953251f;
LongLat[1] = 3.188267f;
效果很好。
【问题讨论】:
-
发布带有错误标志的 logcat。
-
我已将其添加到原帖中,谢谢。
-
空引用意味着它正在尝试访问不存在的东西。您要么忘记在编辑器中拖动某些内容,要么领先一步并且有一些未注释的内容仍应被注释。您的代码正在使用不存在的东西。
-
它可以在 Unity 编辑器中运行,所以 android 编译器肯定会发生一些奇怪的事情。
-
是什么让您认为问题出在
print(LongLat[0])?我真的很怀疑。我认为你应该评论那条线。你会看到这个问题依然存在。
标签: c# android unity3d location location-services