我有一个包含一些场景的 WebGl Unity 应用程序。 我需要为每个场景进行构建,假设 SceneA、SceneB、SceneC...
因此,为了进行构建,我写道:
"C:\Program Files\Unity\Editor\Unity.exe" -buildTarget WebGL ... SceneName ?
问题是:
- 如何指定SceneName?
- 如何指定目标目录?
谢谢
最佳答案
您是想问通过命令行构建时如何指定使用哪些场景?如果是这样,我会这样做。
对于你的第一个问题,
How to specify SceneName ?
我不知道您是否可以在命令行中直接指定场景名称,但您可以使用命令行运行特定函数,从而更改为项目构建的场景。
这是您需要的代码片段,但可以根据您的用例进行更改
using UnityEditor;
class MyEditorScript
{
static void PerformBuild ()
{
string[] scenes = { "Assets/MyScene.unity" };
BuildPipeline.BuildPlayer(scenes, ...);
}
}
上面的代码片段非常简单,您可以直接指定每个场景,然后将其添加到build设置中。您可以传入参数来获得不同的结果或创建多个函数,无论哪种对您来说最简单。以下是在命令行中调用此函数的方法
"C:\Program Files\Unity\Editor\Unity.exe" -batchmode -executeMethod MyEditorScript.PerformBuild
我在这里使用-batchmode
,因此如果出现任何提示,Unity 将使它们静音,以便该过程可以更加自动化。
至于你的第二个问题,
And how to specify destination directory ?
我不确定您是否想将保存的目录和构建的场景联系起来,但这可能会让一切变得更容易。有一个名为 BuildPlayerOptions.locationPathName
的build设置,它允许您指定构建的保存位置
static void WebGLProductionBuild()
{
// Build the player.\
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
buildPlayerOptions.scenes = new[] { "Assets/Scene1.unity", "Assets/Scene2.unity" };
buildPlayerOptions.locationPathName = "yourLocationNameHere";
buildPlayerOptions.target = BuildTarget.WebGL;
buildPlayerOptions.options = BuildOptions.None; // set whatever you want here
BuildPipeline.BuildPlayer(buildPlayerOptions); // apply the setting changes
}
除了函数调用如上行之外,调用上面的方法是完全相同的
"C:\Program Files\Unity\Editor\Unity.exe" -batchmode -executeMethod MyEditorScript.WebGLProductionBuild
我不相信你想要实现的目标可以完全从命令行完成,但这个答案非常接近。我也不确定你是否想要将场景和新路径捆绑在一起。如果您希望构建每个单独的场景并指定新路径,可以通过使用 switch 语句创建一个新函数或仅调用多个函数来实现。
关于unity-game-engine - 如何通过命令行指定场景名称构建Unity WebGl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67943915/