在ubuntu下通过命令行构建Unity Server



我创建了一个非常简单的Unity服务器,它使用一个简单的脚本(取自这里)。我尝试通过ubuntu bash使用以下命令构建它:

~/Unity/Hub/Editor/2019.4.30f1/Editor/Unity -batchmode -nographics -logfile stdout.log -projectPath /path/to/the/project -buildLinux64Player /project/build/destination -quit

它成功了!它能够创建一个工作构建。问题是3D窗口也被显示出来了。我不想与任何游戏对象互动。有没有办法在没有GUI的情况下创建或运行可执行文件?可以看到,我使用了">batchmode";和">nographics";用来防止用户界面出现的标志。

我犯了哪种错误?谢谢你的宝贵时间。

可以看到我使用了"batchmode"one_answers";nographics"用来防止用户界面出现的标志。

是的,它没有!

然而,这两个标志只适用于这个执行构建的UnityEditor的实例…应用于实际生成的应用程序;)


通常你会去BuildSettings并启用

服务器构建
启用此复选框以构建供服务器使用的播放器,并且不需要任何命令行选项而不需要可视元素(headless)。当你启用这个选项时,Unity会构建托管脚本使用UNITY_SERVER定义,这意味着您可以为应用程序编写特定于服务器的代码。您还可以构建到Windows版本作为控制台应用程序,以便stdinstdout是可访问的。Unity日志默认保存到stdout

下的CommandLine Arguments可以找到如何通过控制台触发脚本构建。而不是使用-buildXYZ,你可以使用-executeMethod,并在该方法中定义确切的播放器和构建设置,你想在开始构建过程

#if UNITY_EDITOR
using System;
using System.IO;
using UnityEditor;
using UnityEngine;
class ScriptedBuilds
{
// Invoked via command line only
static void PerformHeadlessLinuxBuild()
{
// As a fallback use <project root>/BUILD as output path
var buildPath = Path.Combine(Application.dataPath, "BUILD");
// read in command line arguments e.g. add "-buildPath some/Path" if you want a different output path 
var args = Environment.GetCommandLineArgs();
for (var i = 0; i < args.Length; i++)
{
if (args[i] == "-buildPath")
{
buildPath = args[i + 1];
}
}
// if the output folder doesn't exist create it now
if (!Directory.Exists(buildPath))
{
Directory.CreateDirectory(buildPath);
}
BuildPipeline.BuildPlayer(
// Simply use the scenes from the build settings
// see https://docs.unity3d.com/ScriptReference/EditorBuildSettings-scenes.html
EditorBuildSettings.scenes,

// pass on the output folder
buildPath,
// Build for Linux 64 bit
BuildTarget.StandaloneLinux64,
// Use Headless mode
// see https://docs.unity3d.com/ScriptReference/BuildOptions.EnableHeadlessMode.html
// and make the build fail for any error
// see https://docs.unity3d.com/ScriptReference/BuildOptions.StrictMode.html
BuildOptions.EnableHeadlessMode | BuildOptions.StrictMode
);
}
}
#endif

~/Unity/Hub/Editor/2019.4.30f1/Editor/Unity -batchmode -nographics -logfile stdout.log -projectPath /path/to/the/project -executeMethod ScriptedBuilds.PerformHeadlessLinuxBuild -quit

或自定义构建输出路径

~/Unity/Hub/Editor/2019.4.30f1/Editor/Unity -batchmode -nographics -logfile stdout.log -projectPath /path/to/the/project -buildPath path/to/build/destination -executeMethod ScriptedBuilds.PerformHeadlessLinuxBuild -quit

也许你可以尝试将#define UNITY_SERVER指令添加到脚本的顶部。这将启用服务器构建和禁用可视元素,请参阅'Platform list'表中的' server build '选项

相关内容

  • 没有找到相关文章