|
@@ -0,0 +1,168 @@
|
|
|
+<!DOCTYPE html>
|
|
|
+<html lang="en-us">
|
|
|
+ <head>
|
|
|
+ <meta charset="utf-8">
|
|
|
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
|
+ <title>无尽藏</title>
|
|
|
+ <link rel="shortcut icon" href="TemplateData/favicon.ico">
|
|
|
+ <link rel="stylesheet" href="TemplateData/style.css">
|
|
|
+ <link rel="manifest" href="manifest.webmanifest">
|
|
|
+ <link rel="stylesheet" href="./index.css">
|
|
|
+ </head>
|
|
|
+ <body>
|
|
|
+ <div id="unity-container">
|
|
|
+ <canvas id="unity-canvas" tabindex="-1"></canvas>
|
|
|
+
|
|
|
+ <div id="unity-loading">
|
|
|
+ <img id="unity-loading-bg" src="./TemplateData/img_bg.jpg" alt="" />
|
|
|
+ <img id="unity-loading-paper" src="./TemplateData/img_paper.png" alt="" />
|
|
|
+ <img id="unity-loading-progress" src="./TemplateData/progress.png" alt="" />
|
|
|
+ <span id="unity-loading-progress-text"></span>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div id="unity-warning"> </div>
|
|
|
+ </div>
|
|
|
+ <div class="save-image-block">
|
|
|
+ <img src="" class="save-image-backgroup" alt="">
|
|
|
+ </div>
|
|
|
+ <script>
|
|
|
+ window.addEventListener("load", function () {
|
|
|
+ if ("serviceWorker" in navigator) {
|
|
|
+ navigator.serviceWorker.register("ServiceWorker.js");
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ let container = document.querySelector("#unity-container");
|
|
|
+ let canvas = document.querySelector("#unity-canvas");
|
|
|
+ let warningBanner = document.querySelector("#unity-warning");
|
|
|
+
|
|
|
+ // Shows a temporary message banner/ribbon for a few seconds, or
|
|
|
+ // a permanent error message on top of the canvas if type=='error'.
|
|
|
+ // If type=='warning', a yellow highlight color is used.
|
|
|
+ // Modify or remove this function to customize the visually presented
|
|
|
+ // way that non-critical warnings and error messages are presented to the
|
|
|
+ // user.
|
|
|
+ function unityShowBanner(msg, type) {
|
|
|
+ function updateBannerVisibility() {
|
|
|
+ warningBanner.style.display = warningBanner.children.length ? 'block' : 'none';
|
|
|
+ }
|
|
|
+ let
|
|
|
+ div = document.createElement('div');
|
|
|
+ div.innerHTML = msg;
|
|
|
+ warningBanner.appendChild(div);
|
|
|
+ if (type == 'error') div.style = 'background: red; padding: 10px;';
|
|
|
+ else {
|
|
|
+ if (type == 'warning') div.style = 'background: yellow; padding: 10px;';
|
|
|
+ setTimeout(function() {
|
|
|
+ warningBanner.removeChild(div);
|
|
|
+ updateBannerVisibility();
|
|
|
+ }, 5000);
|
|
|
+ }
|
|
|
+ updateBannerVisibility();
|
|
|
+ }
|
|
|
+
|
|
|
+ let buildUrl = "Build";
|
|
|
+ let loaderUrl = buildUrl + "/Build.loader.js";
|
|
|
+ let config = {
|
|
|
+ dataUrl: buildUrl + "/Build.data.unityweb",
|
|
|
+ frameworkUrl: buildUrl + "/Build.framework.js.unityweb",
|
|
|
+ codeUrl: buildUrl + "/Build.wasm.unityweb",
|
|
|
+ streamingAssetsUrl: "StreamingAssets",
|
|
|
+ companyName: "4Dage",
|
|
|
+ productName: "H5Game-NanjingMuseum",
|
|
|
+ productVersion: "1.1.0",
|
|
|
+ showBanner: unityShowBanner,
|
|
|
+ };
|
|
|
+
|
|
|
+ // By default Unity keeps WebGL canvas render target size matched with
|
|
|
+ // the DOM size of the canvas element (scaled by window.devicePixelRatio)
|
|
|
+ // Set this to false if you want to decouple this synchronization from
|
|
|
+ // happening inside the engine, and you would instead like to size up
|
|
|
+ // the canvas DOM size and WebGL render target sizes yourself.
|
|
|
+ // config.matchWebGLToCanvasSize = false;
|
|
|
+
|
|
|
+ if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) {
|
|
|
+ // Mobile device style: fill the whole browser client area with the game canvas:
|
|
|
+ let 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);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ let isShowLoading = true;
|
|
|
+ const loadingDom = document.querySelector('#unity-loading');
|
|
|
+ const loadingPaperDom = document.querySelector('#unity-loading-paper');
|
|
|
+ const loadingBgDom = document.querySelector('#unity-loading-bg');
|
|
|
+ const progressDom = document.querySelector('#unity-loading-progress');
|
|
|
+ const progressText = document.querySelector('#unity-loading-progress-text');
|
|
|
+
|
|
|
+ progressText.innerHTML = "0%";
|
|
|
+ let opacity = 1;
|
|
|
+ function fadeOutVideo(){
|
|
|
+ if (opacity > 0) {
|
|
|
+ setTimeout(function() {
|
|
|
+ opacity = opacity - 0.05;
|
|
|
+ progressDom.style.opacity = opacity;
|
|
|
+ loadingPaperDom.style.opacity = opacity;
|
|
|
+ loadingBgDom.style.opacity = opacity;
|
|
|
+ fadeOutVideo();
|
|
|
+ }, 20)
|
|
|
+ } else {
|
|
|
+ window.removeEventListener('resize', refreshLoadingPaperBlockSize);
|
|
|
+ loadingDom.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ let script = document.createElement("script");
|
|
|
+ script.src = loaderUrl;
|
|
|
+ script.onload = () => {
|
|
|
+ createUnityInstance(canvas, config, (progress) => {
|
|
|
+ progressText.innerHTML = parseInt(progress * 100) + "%";
|
|
|
+ }).then((unityInstance) => {
|
|
|
+ window.unityInstance = unityInstance;
|
|
|
+ fadeOutVideo();
|
|
|
+ }).catch((message) => {
|
|
|
+ alert(message);
|
|
|
+ });
|
|
|
+ };
|
|
|
+ document.body.appendChild(script);
|
|
|
+
|
|
|
+ function refreshLoadingPaperBlockSize() {
|
|
|
+ // Unity画布宽高比
|
|
|
+ const unityCanvasWidth = 1560;
|
|
|
+ const unityCanvasHeight = 3376;
|
|
|
+
|
|
|
+ const unityPanelWidth = 1560;
|
|
|
+ const unityPanelHeight = 3301;
|
|
|
+ const unityPanelOffsetY = 97.5;
|
|
|
+ const unityPanelOffsetX = -34;
|
|
|
+
|
|
|
+ const innerWidth = window.innerWidth;
|
|
|
+ const innerHeight = window.innerHeight;
|
|
|
+
|
|
|
+ const scale = (unityCanvasWidth / unityPanelHeight) >
|
|
|
+ (innerWidth / innerHeight) ? (innerWidth / unityCanvasWidth) : (innerHeight / unityCanvasHeight);
|
|
|
+
|
|
|
+ loadingPaperDom.style.width = (unityPanelWidth * scale) + 'px';
|
|
|
+ loadingPaperDom.style.height = (unityPanelHeight * scale) + 'px';
|
|
|
+
|
|
|
+ if (unityPanelOffsetY > 0){
|
|
|
+ loadingPaperDom.style.marginTop = (unityPanelOffsetY * scale * 2) + 'px';
|
|
|
+ } else {
|
|
|
+ loadingPaperDom.style.marginBottom = (-unityPanelOffsetY * scale * 2) + 'px';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (unityPanelOffsetX > 0){
|
|
|
+ loadingPaperDom.style.marginLeft = (unityPanelOffsetX * scale * 2) + 'px';
|
|
|
+ } else {
|
|
|
+ loadingPaperDom.style.marginRight = (-unityPanelOffsetX * scale * 2) + 'px';
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ refreshLoadingPaperBlockSize();
|
|
|
+ window.addEventListener('resize', refreshLoadingPaperBlockSize);
|
|
|
+ </script>
|
|
|
+ <script src="./index.js"></script>
|
|
|
+ </body>
|
|
|
+</html>
|