123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <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>
|