无法从脚本构建Unity WebGL项目

3
我有一个问题,在WebGL目标上构建Unity项目。只有在我尝试从脚本构建时才会出现这个问题。当我从Unity项目构建时,它可以正常构建。 我认为这也很重要,我是从PowerShell脚本中运行此方法的。
$unityPath = "C:\Program Files\Unity\Editor\Unity.exe"
$unityParameters = "-batchmode -projectPath `"$($repo)\`" -username USERNAME -password PASS -executeMethod `"BuildScript.PerformBuild`""
$buildProcess = Start-Process -FilePath $unityPath -ArgumentList $unityParameters -Wait -PassThru

我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEditor.Build.Reporting;

public class BuildScript
{
     public static void PerformBuild()
     {
         var projectName = "scene_1";
         Debug.Log("### BUILDING ###");
         EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.WebGL, BuildTarget.WebGL);
         var report = BuildPipeline.BuildPlayer(
             new[] {$"Assets/Scenes/{projectName}.unity"}, 
             $"Build/Win/{projectName}.exe", 
             BuildTarget.WebGL,
             BuildOptions.None);
         
         Debug.Log("###   DONE   ###");
 
         Debug.Log(report);
         EditorApplication.Exit(1);
     }
}

报告中出现的错误信息:

切换到WebGL:WebGLSupport已禁用

...

DisplayProgressNotification: 构建失败,构建玩家时出错

由于不支持构建目标,因此无法构建玩家


你可以尝试在命令行中传递“-buildTarget WebGL”。这就是我们所做的。 - Retired Ninja
欢迎来到 Stack Overflow。发布帖子有规则,您相对比其他人做得很好。但是,标签 PowerShell 看起来非常不合适。请正确标记您的帖子,并阅读此处的主题说明。 - Doug Maurer
@RetiredNinja 我已在命令行中添加了 -buildTarget WebGL,但没有任何变化。我也尝试从 Unity 运行我的 cs 脚本,它可以正常工作,所以问题肯定出在我的脚本上。 @DougMaurer 我已将 powershell 标签从问题中删除。抱歉。 - Andrzej Osowski
文档中有一条注释,针对SwitchActiveBuildTarget指出该功能在批处理模式下不可用,建议仅使用命令行开关。耸肩 - Retired Ninja
@RetiredNinja 对我来说,SwitchActiveBuildTarget 在没有 -buildTarget WebGL 的情况下完美地工作,并且从他的代码中一切都可以正常运行。也许 Unity 无法将 WebGL 找到为 Unity 包。 - Tomasz Juszczak
@TomaszJuszczak 我认为这也应该可以工作,因为在构建播放器时脚本会被重新编译,但我们是从命令行设置它并在批处理模式下跳过它。我们的脚本更加复杂,包括资源包构建等,并且已经在许多Unity版本中发展,所以这可能更像是“不要改变已经正常运行的东西”的情况,而不是“正确”的做法。 :) - Retired Ninja
1个回答

2
请检查您的计算机是否安装了WebGL支持,例如: C:\Program Files\Unity\2020.1.5f1\Editor\Data\PlaybackEngines\WebGLSupport 错误提示 Switching to WebGL:WebGLSupport is disabled 表示您的Unity安装中可能缺少WebGLSupport。
请确保您在脚本和编辑器中使用的是相同的Unity安装版本。您可以通过Unity Hub中的“显示在资源管理器中”选项来检查路径。 enter image description here

1
好的,很棒!我也考虑过这个问题,但是我以为在编辑器和脚本中使用的是同一个安装程序。 - Retired Ninja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接