小工具知识网

当前位置: 首页 > 行业知识 > Unity2021.3.34 WebGl窗口自适应

行业知识

Unity2021.3.34 WebGl窗口自适应

2026-11-15 06:12:48 来源:互联网转载

由于之前用的是2019的 也有自己的一套自适应模板后来升级Unity 发现并不通用,网上查阅了很多资料也看了很多博主的文章。发现多多少都是有点问题的 达不到自己心目中的自适应 于是东拼写西凑 自己搞了一个 感觉算是比较完美的了! 

一下是文件地址 直接复制模板到Unity中 然后打开Index文件 复制以下代码粘贴即可使用

              Unity WebGL Player | {{{ PRODUCT_NAME }}}                                                                                               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 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 p = document.createElement('p');        p.innerHTML = msg;        warningBanner.appendChild(p);        if (type == 'error') p.style = 'background: red; padding: 10px;';        else {          if (type == 'warning') p.style = 'background: yellow; padding: 10px;';          setTimeout(function() {            warningBanner.removeChild(p);            updateBannerVisibility();          }, 5000);        }        updateBannerVisibility();      }      var buildUrl = "Build";      var loaderUrl = buildUrl + "/{{{ LOADER_FILENAME }}}";      var config = {        dataUrl: buildUrl + "/{{{ DATA_FILENAME }}}",        frameworkUrl: buildUrl + "/{{{ FRAMEWORK_FILENAME }}}",#if USE_WASM        codeUrl: buildUrl + "/{{{ CODE_FILENAME }}}",#endif#if MEMORY_FILENAME        memoryUrl: buildUrl + "/{{{ MEMORY_FILENAME }}}",#endif#if SYMBOLS_FILENAME        symbolsUrl: buildUrl + "/{{{ SYMBOLS_FILENAME }}}",#endif        streamingAssetsUrl: "StreamingAssets",        companyName: {{{ JSON.stringify(COMPANY_NAME) }}},        productName: {{{ JSON.stringify(PRODUCT_NAME) }}},        productVersion: {{{ JSON.stringify(PRODUCT_VERSION) }}},        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:        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";        // To lower canvas resolution on mobile devices to gain some        // performance, uncomment the following line:        // config.devicePixelRatio = 1;        canvas.style.width = window.innerWidth + 'px';        canvas.style.height = window.innerHeight + 'px';        unityShowBanner('WebGL builds are not supported on mobile devices.');      } else {        // Desktop style: Render the game canvas in a window that can be maximized to fullscreen:        canvas.style.width = "100vw";        canvas.style.height = "98vh";      }#if BACKGROUND_FILENAME      canvas.style.background = "url('" + buildUrl + "/{{{ BACKGROUND_FILENAME.replace(/'/g, '%27') }}}') center / cover";#endif      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) => {            setTimeout(function () {                loadingBar.style.display = "none";            }, 500);        }).catch((message) => {          alert(message);        });      };      document.body.appendChild(script);           var unityContainer = document.getElementById('unity-canvas');      function unityContainerResize()      {        var w = window.innerWidth || document.body.clientWidth,                h = window.innerHeight || document.body.clientHeight,                ratio = 16 / 9,                r = w/h;        var setW, setH, setTop, setLeft;        if (r >= ratio) { // 高度撑满          setW = h * ratio;          setLeft = (w - setW) / 2;        } else { // 宽度撑满          setH = w / ratio;          setTop = (h - setH) / 2;        }                 unityContainer.style.width = (setW || w) + 'px';        unityContainer.style.height = (setH || h) + 'px';        unityContainer.style.top = (setTop || 0) + 'px';        unityContainer.style.left = (setLeft || 0) + 'px';       }      window.addEventListener('resize', unityContainerResize)      unityContainerResize()      

上一篇:华硕电脑怎么连接笔记本显示器主机

下一篇:怎么创造服务器基岩版手机?