记录下Unity打包WEBGL 发布与部署方案:
1:制作好的Unity工程选择webgl打包平台(Unity2020以后的版本发布Webgl出现黑屏的情况或者莫名其妙的报错,需要勾选PlayerSetting-PublishingSetting-DecompressionFallback)
2:安装IIS,没有安装可参考:
安装好的直接启动IIS工具
打开界面如下:
3:右击网站新建一个网站,只需要填写以下两点即可;指定路劲是你打包出来的webgl文件夹下,也就是里面有一个index.html文件的文件夹路劲;
4:在填写的路劲文件夹下新建一个web.config的文件,写入以下内容:
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Unity WebGL Player | VideoPro</title>
</head>
<body style="text-align: center">
<canvas id="unity-canvas" width=1900 height=900 style="width: 1900px; height: 900px; background: #231F20"></canvas>
<script src="Build/www.loader.js"></script>
<script>
createUnityInstance(document.querySelector("#unity-canvas"), {
dataUrl: "Build/www.data.unityweb",
frameworkUrl: "Build/www.framework.js.unityweb",
codeUrl: "Build/www.wasm.unityweb",
streamingAssetsUrl: "StreamingAssets",
companyName: "DefaultCompany",
productName: "VideoPro",
productVersion: "0.1",
// matchWebGLToCanvasSize: false, // Uncomment this to separately control WebGL canvas render size and DOM element size.
// devicePixelRatio: 1, // Uncomment this to override low DPI rendering on high DPI displays.
});
</script>
</body>
</html>
然后重新启动网站即可通过IP+端口访问该网站;
5:解决webgl打包后无法加载服务器资源问题(编辑器下正常加载),感谢前同事的支持,了解到一个新词 “IIS跨域”;
什么是跨域
只有当协议、端口、和域名都相同的页面,则两个页面具有相同的源。只要网站的协议名protocol、 主机host、 端口号port 这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域调用,会受到同源策略的限制。
解决办法:
点击IIS管理器部署的网站找到<HTTP响应标头> -右击空白处,添加以下内容:
// 名称 值
// Access-Control-Allow-Origin *
// Access-Control-Allow-Methods GET, POST, PUT, DELETE, OPTIONS
// Access-Control-Allow-Headers Content-Type