facebook twitter hatena line email

Unity/WebGL/apache

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

Uncaught SyntaxError: Invalid or unexpected token等エラーがでる場合

以下詳細

Uncaught SyntaxError: Invalid or unexpected token
sample1.loader.js:1 Uncaught ReferenceError: unityFramework is not defined
    at HTMLScriptElement.n.onload (sample1.loader.js:1)
sample1.loader.js:1 [UnityCache] 
'http://hoge.com/sample1/Build/sample1.data.br' 
successfully downloaded and stored in the indexedDB cache

minimumで出力したindex.htmlです。

<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Unity WebGL Player | unsi</title>
  </head>
  <body style="text-align: center">
    <canvas id="unity-canvas" style="width: 626px; height: 250px; background: #231F20"></canvas>
    <script src="Build/webgl_sample1.loader.js"></script>
    <script>
      createUnityInstance(document.querySelector("#unity-canvas"), {
        dataUrl: "Build/webgl_sample1.data.br",
        frameworkUrl: "Build/webgl_sample1.framework.js.br",
        codeUrl: "Build/webgl_sample1.wasm.br",
        streamingAssetsUrl: "StreamingAssets",
        companyName: "DefaultCompany",
        productName: "testapp",
        productVersion: "1.0",
      });
    </script>
  </body>
</html>

ウェブサーバーではttp://hoge.com/sample1/index.htmlとなるので、


index.htmlのsrcとかに/sample1/を追加したが・・・上記のように同じエラーがでる。

<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Unity WebGL Player | unsi</title>
  </head>
  <body style="text-align: center">
    <canvas id="unity-canvas" style="width: 626px; height: 250px; background: #231F20"></canvas>
    <script src="/sample1/Build/webgl_sample1.loader.js"></script>
    <script>
      createUnityInstance(document.querySelector("#unity-canvas"), {
        dataUrl: "/sample1/Build/webgl_sample1.data.br",
        frameworkUrl: "/sample1/Build/webgl_sample1.framework.js.br",
        codeUrl: "/sample1/Build/webgl_sample1.wasm.br",
        streamingAssetsUrl: "StreamingAssets",
        companyName: "DefaultCompany",
        productName: "testapp",
        productVersion: "1.0",
      });
    </script>
  </body>
</html>

https://docs.unity3d.com/2020.1/Documentation/Manual/webgl-server-configuration-code-samples.html?_ga=2.258867658.1744347718.1605948322-176549160.1595780906 apacheだと参照先の.htaccessをBuildのdirの下に於けば良いと合ったが、今度はbrファイルにアクセスできなくなった。

unity2020.1系だと、このエラーが出るようで、unity2019系にするとどうなるか試してみると良いかも。

unity2020系動作part1

unity2020系でも、Project Settings/Player/WebGL/"Publishing Settings"の"Compression Format"をDisabledへすると、動作した。

unity2020系動作part2

unity2020系でも、Project Settings/Player/WebGL/"Publishing Settings"のDecompression FallbackをOnにすると、動作した。

出力されるindex.htmlは、↓のような感じ

<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Unity WebGL Player | typetoon</title>
  </head>
  <body style="text-align: center">
    <canvas id="unity-canvas" width=960 height=600 style="width: 960px; height: 600px; background: #231F20"></canvas>
    <script src="Build/web_project.loader.js"></script>
    <script>
      createUnityInstance(document.querySelector("#unity-canvas"), {
        dataUrl: "Build/web_project.data.unityweb",
        frameworkUrl: "Build/web_project.framework.js.unityweb",
        codeUrl: "Build/web_project.wasm.unityweb",
        streamingAssetsUrl: "StreamingAssets",
        companyName: "DefaultCompany",
        productName: "testapp",
        productVersion: "1.0",
        // matchWebGLToCanvasSize: false, // Uncomment this to separately control WebGL canvas render size and DOM element size.
        // devicePixelRatio: 1, // Uncomment this to override low DPI rendering on high DPI displays.
      });
    </script>
  </body>
</html>

参考:https://baba-s.hatenablog.com/entry/2021/01/05/090000