我们有一些代码可以通过命令行参数运行,并确定是否启动客户端或服务器(用于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
,我们无法确切地知道它的位置。
答案 0 :(得分:1)
添加调试行,我们发现它以某种方式抛出Environment.GetCommandLineArgs()
调用本身,而不是返回的数组或数组中的任何内容为null。由于实际上并不需要,我们添加了一个:
if (!Application.isMobilePlatform)
{
string[] commandLineArgs = Environment.GetCommandLineArgs();
...
}
围绕整个命令行参数解析代码。我发布这个作为我的问题的答案,因为似乎没有任何其他解释,或关于此的任何其他问题/答案。可能对其他人有用。
如果有人不同意,并认为他们知道可能发生了什么,请发布替代答案:)