Android上的Environment.GetCommandLineArgs()中的NullReferenceException

时间:2017-01-26 10:15:55

标签: android unity3d

我们有一些代码可以通过命令行参数运行,并确定是否启动客户端或服务器(用于Unity Networking游戏)。它有代码:

string[] commandLineArgs = Environment.GetCommandLineArgs();
foreach (string arg in commandLineArgs)
{
    if (arg.StartsWith(PORT_COMMAND_LINE_PREFIX))
        var port = int.Parse(arg.Substring(PORT_COMMAND_LINE_PREFIX.Length).Trim());
        if (port >= 1024 && port < 49151)
        {
            ServerLoader.batchmodeServerPort = port;
        }
    }
    ...
}

这在独立的Windows版本(实际使用它)和iOS上(我猜参数数组只是空的)工作正常。但是,在Android上我们得到的是NullReferenceException,我们无法确切地知道它的位置。

1 个答案:

答案 0 :(得分:1)

添加调试行,我们发现它以某种方式抛出Environment.GetCommandLineArgs()调用本身,而不是返回的数组或数组中的任何内容为null。由于实际上并不需要,我们添加了一个:

if (!Application.isMobilePlatform)
{
    string[] commandLineArgs = Environment.GetCommandLineArgs();
...
}

围绕整个命令行参数解析代码。我发布这个作为我的问题的答案,因为似乎没有任何其他解释,或关于此的任何其他问题/答案。可能对其他人有用。

如果有人不同意,并认为他们知道可能发生了什么,请发布替代答案:)