|
@@ -0,0 +1,112 @@
|
|
|
+<template>
|
|
|
+ <div id="unity-container" class="unity-desktop">
|
|
|
+ <canvas id="unity-canvas" tabindex="-1"></canvas>
|
|
|
+ <div id="unity-loading-bar">
|
|
|
+ <div id="unity-logo"></div>
|
|
|
+ <div id="unity-progress-bar-empty">
|
|
|
+ <div id="unity-progress-bar-full"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div id="unity-warning"> </div>
|
|
|
+ <div id="unity-footer">
|
|
|
+ <!-- <div id="unity-webgl-logo"></div>
|
|
|
+ <div id="unity-fullscreen-button"></div>
|
|
|
+ <div id="unity-build-title">2Building</div> -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+import { onMounted, reactive, computed, ref, onUnmounted } from 'vue';
|
|
|
+import { useRouter } from 'vue-router'
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ /* bg模型 */
|
|
|
+
|
|
|
+ var container = document.querySelector("#unity-container");
|
|
|
+ var canvas = document.querySelector("#unity-canvas");
|
|
|
+ var loadingBar = document.querySelector("#unity-loading-bar");
|
|
|
+ var progressBarFull = document.querySelector("#unity-progress-bar-full");
|
|
|
+ var fullscreenButton = document.querySelector("#unity-fullscreen-button");
|
|
|
+ var 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';
|
|
|
+ }
|
|
|
+ var 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();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 使用 import.meta.url 来获取动态路径
|
|
|
+ const buildUrl = '/assets/Build/'
|
|
|
+ const loaderUrl = buildUrl + 'B.loader.js';
|
|
|
+ const dataUrl = buildUrl + 'B.data';
|
|
|
+ const frameworkUrl = buildUrl + 'B.framework.js';
|
|
|
+ const codeUrl = buildUrl + 'B.wasm';
|
|
|
+
|
|
|
+ const config = {
|
|
|
+ dataUrl: dataUrl,
|
|
|
+ frameworkUrl: frameworkUrl,
|
|
|
+ codeUrl: codeUrl,
|
|
|
+ streamingAssetsUrl: "StreamingAssets",
|
|
|
+ companyName: "DefaultCompany",
|
|
|
+ productName: "2Building",
|
|
|
+ productVersion: "0.1.0",
|
|
|
+ showBanner: unityShowBanner,
|
|
|
+ };
|
|
|
+
|
|
|
+ if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) {
|
|
|
+
|
|
|
+ var 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);
|
|
|
+ container.className = "unity-mobile";
|
|
|
+ canvas.className = "unity-mobile";
|
|
|
+
|
|
|
+ } else {
|
|
|
+ canvas.style.width = "960px";
|
|
|
+ canvas.style.height = "600px";
|
|
|
+ }
|
|
|
+
|
|
|
+ loadingBar.style.display = "block";
|
|
|
+
|
|
|
+ var script = document.createElement("script");
|
|
|
+ script.src = loaderUrl;
|
|
|
+ script.onload = () => {
|
|
|
+ createUnityInstance(canvas, config, (progress) => {
|
|
|
+ progressBarFull.style.width = 100 * progress + "%";
|
|
|
+ }).then((unityInstance) => {
|
|
|
+ loadingBar.style.display = "none";
|
|
|
+ // fullscreenButton.onclick = () => {
|
|
|
+ // unityInstance.SetFullscreen(1);
|
|
|
+ // };
|
|
|
+ }).catch((message) => {
|
|
|
+ alert(message);
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ document.body.appendChild(script);
|
|
|
+
|
|
|
+});
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped></style>
|