You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击链接清空页面后延迟1秒加载Unity游戏的问题排查

问题排查与修复方案

现有代码问题汇总

  • 语法错误:nothing是未定义变量,清空内容需赋值为空字符串""
  • 无合法延时实现:JS没有原生的wait语法,需通过setTimeout实现1秒等待
  • 链接调用错误:javascript:wipeHTML缺少函数执行括号,改为javascript:wipeHTML()才会触发函数执行
  • 资源销毁逻辑错误:直接清空document.documentElement.innerHTML会把Unity依赖的样式、加载器脚本全部销毁,后续无法初始化游戏
  • HTML结构不规范:<body>标签外的内容会被浏览器自动移入body内,影响元素清除逻辑
  • Unity初始化逻辑提前执行:当前代码页面加载就自动初始化Unity,不符合点击后才加载的需求

修复后完整代码

<!DOCTYPE html>
<html>
<head>
  <!-- 提前保留Unity依赖的资源,避免清空后丢失 -->
  <link rel="stylesheet" href="TemplateData/style.css">
  <script src="TemplateData/UnityProgress.js"></script>
  <script src="TemplateData/unityloader41.js"></script>
  <script>
    function wipeHTML() {
      // 第一步:清空body内所有内容,页面变为空白
      document.body.innerHTML = ""
      // 第二步:1秒延时后加载Unity游戏
      setTimeout(() => {
        // 插入Unity需要的容器节点
        document.body.innerHTML = `
          <div class="webgl-content">
            <div id="gameContainer" style="width: 100vw; height: 100vh; margin: 0;"></div>
          </div>
        `
        // 初始化Unity游戏
        var gameInstance = UnityLoader.instantiate("gameContainer", "Build/slope.json", {
          onProgress: UnityProgress,
          Module: {
            onRuntimeInitialized: function() {
              UnityProgress(gameInstance, "complete")
            }
          }
        });
      }, 1000)
    }
  </script>
</head>
<body style="margin: 0; overflow: hidden;">
  <h1>
    <a href="javascript:wipeHTML()">wipe everything</a>
  </h1>
  <div>
    <h1>hello</h1>
    <h3>erase me</h3>
  </div>
</body>
</html>

修复说明

  • Unity依赖的样式和脚本放在head标签内保留,不会被body清空操作影响
  • 点击链接后先清空body内所有内容,页面呈现1秒空白后自动插入Unity容器并初始化游戏
  • 容器宽高设置为100vw和100vh,保证游戏占满整个页面视口

内容的提问来源于stack exchange,提问作者user9384

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:15:03