更新到 Unity 2019.3 后无法编译 Unity WebGL
Posted
技术标签:
【中文标题】更新到 Unity 2019.3 后无法编译 Unity WebGL【英文标题】:Unable to compile Unity WebGL after updating to Unity 2019.3 【发布时间】:2020-02-04 23:21:48 【问题描述】:我有一个 Unity 2019.2 项目,我刚刚更新到 Unity 2019.3,打开项目时编辑器中没有错误,我什至可以以 .exe 形式构建到 Windows 设备。所以我开始开发一些功能,一切都很好,它仍然在 Windows 上构建。所以我尝试将我的平台切换到 WebGl。一切似乎都很好,我什至可以运行我的项目。但是一旦我点击构建,我就会收到以下错误:(每个错误由一行分隔)
Library\PackageCache\com.unity.xr.legacyinputhelpers@2.0.2\Runtime\TrackedPoseDriver\TrackedPoseDriver.cs(185,13): error CS1069: The type name 'PoseData' could not be found in the namespace 'UnityEngine.XR.Tango'. This type has been forwarded to assembly 'UnityEngine.ARModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' Enable the built in package 'AR' in the Package Manager window to fix this error.
Library\PackageCache\com.unity.xr.legacyinputhelpers@2.0.2\Runtime\TrackedPoseDriver\TrackedPoseDriver.cs(186,17): error CS0103: The name 'TangoInputTracking' does not exist in the current context
Library\PackageCache\com.unity.xr.legacyinputhelpers@2.0.2\Runtime\TrackedPoseDriver\TrackedPoseDriver.cs(186,91): error CS0103: The name 'PoseStatus' does not exist in the current context
Error building Player because scripts have compile errors in the editor
Build completed with a result of 'Failed'
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
UnityEditor.BuildPlayerWindow+BuildMethodException: Error building Player because scripts have compile errors in the editor
at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x00275] in <6f28216fea9f453abf2e05b770ed3ee4>:0
at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x00080] in <6f28216fea9f453abf2e05b770ed3ee4>:0
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
尝试在 WebGL 中构建后,我无法再在编辑器中运行项目,但是如果我将平台切换回 Windows,错误就会消失,我可以在编辑器中运行项目,甚至可以为 Windows 编译。但是切换回 WebGL 并尝试再次编译会破坏它。
这似乎与 Unity 2019.3 现在基于包的方式有关,但我不知道这是 UI 问题、输入系统问题还是其他任何无休止的问题。其他人可以破译错误并提供解决方案吗?
编辑:尝试在包管理器中更新 Unity XR 后,我现在收到以下错误,这次出现的错误只是切换平台而不是为它构建:
Library\PackageCache\com.unity.xr.legacyinputhelpers@2.0.6\Runtime\TrackedPoseDriver\TrackedPoseDriver.cs(188,13): error CS1069: The type name 'PoseData' could not be found in the namespace 'UnityEngine.XR.Tango'. This type has been forwarded to assembly 'UnityEngine.ARModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' Enable the built in package 'AR' in the Package Manager window to fix this error.
Library\PackageCache\com.unity.xr.legacyinputhelpers@2.0.6\Runtime\TrackedPoseDriver\TrackedPoseDriver.cs(189,17): error CS0103: The name 'TangoInputTracking' does not exist in the current context
Library\PackageCache\com.unity.xr.legacyinputhelpers@2.0.6\Runtime\TrackedPoseDriver\TrackedPoseDriver.cs(189,91): error CS0103: The name 'PoseStatus' does not exist in the current context
【问题讨论】:
嗯,它清楚地说 xr 包找不到依赖项。 @BugFinder xr 包是什么?不是我手动安装的,怎么安装呢? 你可以在 PackageManager 中找到那个包,看看我的screenshot。如果您不需要它,您可以删除它,或者您可以将该软件包更新到最新版本。 xr 默认没有安装,所以安装了它。但是正如 Ankit 所说,您可以将其从包管理器中删除 @BugFinder 我将 XR 助手更新到 2.0,6,我已经用结果更新了我的原始评论。 XR 助手有什么作用?我没有手动安装它,所以如果它安装了,那肯定是来自资产商店的东西,但我唯一认为我安装的是 Easy Notes。 【参考方案1】:更新到 Unity 2019.3 时,Unity 自动安装了一个名为“XR Legacy Input Helpers”See Reference Image 的包,我尝试通过打开包管理器更新包来更新包,但这只会导致更多错误。
我发现删除包是可行的,因为没有人在使用它,而且我不知道为什么 Unity 甚至安装了它。如果我使用这个包虽然我不知道我会做什么。
感谢@BugFinder & 和@Ankit 帮助我找到解决问题的方法。
【讨论】:
【参考方案2】:在我将项目从 2019.1 升级到 2019.3 后,我也遇到了一些错误
Library\PackageCache\com.unity.xr.legacyinputhelpers@2.0.6\Runtime\TrackedPoseDriver\TrackedPoseDriver.cs
与 Jhon Piper 的回答类似,我发现添加了对 com.unity.xr.legacyinputhelpers
的不必要依赖项。
我的解决方案是删除此依赖项。 您也可以手动执行此操作,而不是使用包管理器。 以下是必要的步骤:
1 - 打开项目文件夹/Packages/manifest.json
2 - 你会看到这样的:
"dependencies":
"com.unity.2d.sprite": "1.0.0",
"com.unity.2d.tilemap": "1.0.0",
"com.unity.ads": "2.0.8",
...
3 - 在此文件中,删除提及包 com.unity.xr.legacyinputhelpers
的行并保存文件。
【讨论】:
以上是关于更新到 Unity 2019.3 后无法编译 Unity WebGL的主要内容,如果未能解决你的问题,请参考以下文章
Unity用户手册2019.3(中文版)1.3.1 常见资源类型
Unity用户手册2019.3(中文版)1.3.1 常见资源类型