答案 0 :(得分:1)
我终于在我的项目中修复了同样的错误。这是我所做的:
缩小导致 WebGL 崩溃的代码行。 完成查明代码行的痛苦过程 是错误的根源。我有这个“运气”发生错误 当我点击按钮并尝试在添加模式下加载 UIScene 时。所以 起初我在场景中找到了禁用时摆脱的脚本 坠机事件。然后我重复了这些步骤并深入研究 线。经过 2 小时的构建、评论等,我发现代码 不工作是为 UnityEngine.UI.Image 设置新颜色。 这很奇怪,因为在游戏模式下一切正常。
寻找解决方案。我认为我的解决方案可能不是通用的,但我认为在运行 WebGL 时,Unity 游戏循环/生命周期会发生一些事情。问题的根源是我在 Start 方法中设置了存储 UI.Image 的字段,然后在某些函数中我尝试更改颜色。
属性未在检查器中公开。
public class ModuleUI : MonoBehaviour
{
Image qualityBG;
void Start()
{
qualityBG = GetComponent<Image>();
}
...
那么下面这行就是崩溃的原因
public void Set(Module module)
{
...
qualityBG.color = module.Quality.ToColor();
}
奖励: 我还修复了一些不重要的问题(不破坏 WebGL 游戏),但在游戏模式中没有按预期正常工作。这也与尝试在 Start() 方法中设置一些对象然后对它们做一些事情有关。该集合未在 WebGL 中设置(可能为空)。
EffectUI[] effects;
Start()
{
effects = GetComponentsInChildren<EffectUI>();
}
void HideAllEffects()
{
if (effects != null)
for (int i = 0; i < effects.Length; ++i)
effects[i].gameObject.SetActive(false);
}
当我将 [SerializeField] 添加到 effects 并将其连接到场景中时,这也开始起作用了...
希望这会帮助你们中的一些人!
答案 1 :(得分:0)
由于使用了dynamic
关键字,此错误发生在我身上。将我所有的dynamic
类型替换为object
后,错误消失了。显然,WebGL构建不支持dynamic
关键字。
答案 2 :(得分:-1)
要在网络浏览器中运行此版本-我已删除了所有无法在网络版本中使用的与代码相关的东西,例如应用内购买,广告,页首横幅,本机共享等...
从项目中删除了这些代码之后,我将导出的构建内容上载到了主机中。然后,它开始正常工作。