Standalone / Client / Exe / Player / Build都是指最终用户用来运行我的游戏的可执行文件。
我使用Unity作为我的环境选择。我正在创建一个启动游戏的启动器。这听起来非常多余,因为Unity有一个“启动器”窗口,用于它们的独立构建,但是这个目的是通过检查服务器上的最新版本来确保游戏是最新的。我使用简单的WPF应用程序构建了客户端。在这一点上,我正在考虑我的各种选项,以确保游戏的可执行文件仅从启动器启动。但是,Unity的独立构建只接受一些参数。这是我正在考虑的事情:
copy /b
临时组合,并作为exe输出(然后在启动后删除)。 exe不超过17mb,所以不应该花太长时间。我真的想用这个启动器,因为:
如果您有任何其他建议,或者可能以正确的方式指导我,请告诉我。谢谢。
这里回答:http://answers.unity3d.com/questions/366195/parameters-at-startup.html
从这里:https://effectiveunity.com/articles/making-most-of-unitys-command-line/
// Helper function for getting the command line arguments
private static string GetArg(string name)
{
var args = System.Environment.GetCommandLineArgs();
for (int i = 0; i < args.Length; i++)
{
if (args[i] == name && args.Length > i + 1)
{
return args[i + 1];
}
}
return null;
}
您可以使用System.Environment.GetCommandLineArgs()来访问Unity构建中的命令行参数。
不是确切的答案,但我也需要为我最近的项目启动一个启动器。所以我在启动器应用程序和游戏之间设计了自己的通信系统。 当我们打开启动器(C#Windows窗体应用程序,看起来像Bethesda游戏启动器)时,它开始侦听特定端口(例如23076 TCP)。然后当我们打开游戏时,它连接到启动器服务器,启动器将向游戏发送一些数据,例如:启动器是否在运行?选择分辨率,选择质量,选择语言,控制设置等。 所以我们可以简单地在启动器中设置我们的选项,并通过TCP连接将它们发送到游戏中。
Unity附带了command line工具。
Unity通常通过双击桌面上的图标来启动。但是,也可以从命令行(从macOS终端或Windows命令提示符)运行它。以这种方式启动时,Unity可以在启动时接收命令和信息,这对于测试套件,自动构建和其他生产任务非常有用。
您可能特别关注的一个特殊论点是:
-batchmode以批处理模式运行Unity。这应始终与其他命令行参数一起使用,因为它确保不会出现弹出窗口,并且无需任何人为干预。在执行脚本代码期间发生异常,资产服务器更新失败或其他失败的操作时,Unity会立即退出并返回代码1。
请注意,在批处理模式下,Unity会将其日志输出的最小版本发送到控制台。但是,日志文件仍包含完整的日志信息。不支持在编辑器打开相同项目时以批处理模式打开项目;一次只能运行一个Unity实例