yzx hace 8 meses
padre
commit
c17bdd0927
Se han modificado 3 ficheros con 118 adiciones y 3 borrados
  1. 0 1
      uniapp/pages/index/detail.vue
  2. 6 2
      web/src/App.vue
  3. 112 0
      web/src/components/unity/unity.vue

+ 0 - 1
uniapp/pages/index/detail.vue

@@ -1079,7 +1079,6 @@
 	}
 
 	.biaoge_box {
-		max-height: 500rpx;
 		width: 100%;
 		overflow-y: auto
 	}

+ 6 - 2
web/src/App.vue

@@ -3,7 +3,7 @@
         <Suspense>
         <router-view></router-view>
         </Suspense>
-        <keep-alive>  
+        <keep-alive>
         <Unity v-if="route.path === '/home'" />
         </keep-alive>
     </el-config-provider>
@@ -54,4 +54,8 @@ watch(
 
 
 </script>
-
+<style>
+.footer{
+    z-index: 1000;
+}
+</style>

+ 112 - 0
web/src/components/unity/unity.vue

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