C# NullReferenceException仅在unity中的android中构建和运行时发生
因此,我有以下代码:C# NullReferenceException仅在unity中的android中构建和运行时发生,c#,android,unity3d,location,location-services,C#,Android,Unity3d,Location,Location Services,因此,我有以下代码: 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]); 我将Long
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];
当我在unity编辑器中运行它时,我没有任何问题(稍后我重新定义了LongLat,因为显然pc没有GPS)。但当我在android上构建和运行时,我在第四行print(LongLat[0])上得到一个NullReferenceException,我不清楚为什么会发生这种情况
定位服务正在运行
这是亚洲开发银行的输出
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] = 55.953251f;
LongLat[1] = 3.188267f;
它工作得很好。您是否初始化了位置服务,如?所以我设法解决了这个问题,没有将Input.location.lastData放入数组中,而是直接使用它
我仍然不知道为什么放入数组会如此麻烦。发布带有错误标志的logcat。我将其添加到原始帖子中,谢谢。空引用表示它试图访问不存在的内容。您可能忘了在编辑器中拖动某些内容,或者您领先了一步,并且有一些未注释的内容仍然应该注释。你的代码使用了一些不存在的东西。它可以在Unity编辑器中工作,但android编译器肯定出了一些奇怪的问题。是什么让你认为问题出在
print(LongLat[0])
?我真的很怀疑。我认为你应该评论这句话。你会发现这个问题仍然存在。
LongLat[0] = 55.953251f;
LongLat[1] = 3.188267f;