早上好堆栈心灵!
我在Unity3d中使用C#。
我从包含我需要的Lat / Lon坐标的USGS rss原子提取中拉出一个字符串。一旦我有了这个字符串,我就把它打破了#34; "并使用string.Split将两个条目放入一个数组中。在脚本的早期,我声明了数组并将其填充如下:
string[] shakeup = { "one", "two", "three" };
我已经确认这很好用,我可以按预期检索这些条目。
然而,一旦我从我的feed中拉出字符串并将其分解,我得到一个IndexOutOfRangeException:Array索引超出范围。当我尝试将新字符串拉出数组以将它们转换为浮点数时出错。
我从Feed中提取的字符串如下所示:
33.2903333 -115.695
我用来将这个字符串分成两部分并用它来填充数组的代码是:
void SplitIt()
{
//Read line, and split it by whitespace into an array of strings
char delimiter = ' ';
shakeup = Message.Split(' ');
Debug.Log(shakeup[0]);
Debug.Log("length is:" + shakeup.Length);
Debug.Log(shakeup[1]);
第二个Debug.Log(shakeup.Length)返回1。 第三个Debug.Log是我尝试读回数组中的第二个条目的地方,这是我收到错误消息的地方。
欢迎任何帮助或建议。我已经通过StackOverflow和UnityAnswers论坛搜索和搜索了,但是还没有能够解决这个问题。
我确实考虑过使用List,但由于数组只有两个坐标,这似乎是一个更简单的解决方案,开销略微减少(当然,我花了12个小时尝试调试它。)
编辑: 这可能是我得到的字符串的问题。它作为字符串传递就好了,我可以将它打印到控制台,Unity像任何其他字符串一样对待它。我是从这里拉出来的:
https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.atom 34.2495 -118.5568333
第二点,字符串的第一部分进入数组就好了。如果我打电话给#34; shakeup [0]"我得到了#34; 34.2495"正如所料。它是被吃掉的字符串的第二部分。
答案 0 :(得分:0)
感谢大家帮我调试这个!
事实证明,Message字符串正在另一个脚本中更新。该更新干扰了.Split的执行。我能够通过将.Split移动到脚本的不同区域来解决这个问题。