webgl在鸿蒙和ios中,无法正常显示问题?

Unity webgl,在鸿蒙系统中,部分机型没有正常显示,部分ios设备,打开后会出现,网页一直重新加载

<!doctype html>
<html lang="en-us">
  <head>
    <meta charset="utf-8" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Unity WebGL Player | MetaHuman</title>
    <style>
      body,
      html {
        height: 100%;
        margin: 0;
        padding: 0;
        width: 100%;
      }

      #unity-container {
        height: 100%;
        overflow: hidden;
        width: 100%;
      }

      #unity-canvas {
        height: 100%;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="unity-container">
      <canvas height="100%" id="unity-canvas" tabindex="-1" width="100%"></canvas>
    </div>
    <script>
      const canvas = document.querySelector('#unity-canvas');
      let unityInstanceV;
      const buildUrl = 'Build';
      const loaderUrl = buildUrl + '/10_27_1.loader.js';
      const config = {
        dataUrl: buildUrl + '/10_27_1.data.unityweb',
        frameworkUrl: buildUrl + '/10_27_1.framework.js.unityweb',
        codeUrl: buildUrl + '/10_27_1.wasm.unityweb',
        symbolsUrl: buildUrl + '/10_27_1.symbols.json.unityweb',
        streamingAssetsUrl: 'StreamingAssets',
        companyName: 'DefaultCompany',
        productName: 'MetaHuman',
        productVersion: '0.1.0',
      };

      if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) {
        const meta = document.createElement('meta');
        meta.name = 'viewport';
        meta.content =
          'width=device-width, height=device-height, initial-scale=1.0, user-scalable=no, shrink-to-fit=yes';
        document.getElementsByTagName('head')[0].appendChild(meta);
      } else {
        config.devicePixelRatio = 2;
      }

      const script = document.createElement('script');
      script.src = loaderUrl;
      script.onload = () => {
        createUnityInstance(canvas, config)
          .then((unityInstance) => {
            unityInstanceV = unityInstance;
          })
          .catch((message) => {
            alert(message);
          });
      };
      document.body.appendChild(script);

      // 接受unity返回的消息
      function ReportReaddy(str) {
        console.log(str);
        // 接收到此消息,canvas中会显示画面
        if (str === '初始化完成') {
        }
      }
    </script>
  </body>
</html>

目前整个unity的包,一共是103Mb的大小

ios的问题:部分机型会出现 ‘因为出现问题,此网页以重新载入。’;15.4.1的版本,会出现错误23379d940e4a9105f98f2f215c5c92c5.jpeg

鸿蒙的问题:部分机型,华为浏览器,微信浏览器,能够正常加载,ReportReaddy也能接收到消息,但是canvas不显示画面,夸克浏览器可以显示画面

有没有大佬知道,这些问题大概是什么原因

补充:
鸿蒙4.0,没有画面,自带的浏览器v15.0.10.301,微信v8.0.55(不知道怎么看微信内置浏览器)
鸿蒙4.2,没有画面,自带的浏览器v15.0.10.301,谷歌浏览器v131.0.6778.200

阅读 1.8k
2 个回答
新手上路,请多包涵

我也遇到过这个问题,解决方案非常简单。
在ProSetting里面,Splash image里需要勾选 Show Splash Screen即可。
原因不详,可能是鸿蒙系统需要这个?

检查WebGL兼容性
你的Unity项目在所有目标设备上都正确配置了WebGL。你可以在Unity编辑器中检查WebGL构建设置,确保启用了对所有目标平台的支持。

  1. 更新Unity和WebGL插件
    你使用的是最新版本的Unity和WebGL插件。有时,更新到最新版本可以解决一些兼容性问题。
  2. 优化WebGL配置
    调整Unity项目中的WebGL配置,例如减少图形质量设置,优化资源使用等。这会提高在各种设备上的兼容性。
  3. 测试和调试
    在目标设备上进行详细的测试和调试,查看具体的错误信息和日志。这可以帮助你更准确地定位问题所在。
  4. 查看设备特定问题
    对于鸿蒙系统和特定iOS设备,需要查看这些设备的具体WebGL实现和限制。
    总之,每个浏览器对WebGL兼容程度不同,出现这些情况很正常。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
HarmonyOS
子站问答
访问
宣传栏