【Unity】打包与部署WebGL项目遇到的题目及解决记录

打印 上一主题 下一主题

主题 1849|帖子 1849|积分 5547

利用Unity打包Web端项目的题目还是挺多的,以是记录一下。
有关WebGL项目的打包与部署,这里就不介绍了
(会持续更新项目部署时遇到的实际题目,接待关注~~~)
一:IIS部署后网页打不开,网页显示404

点击F12,打开网页控制台,所遇到的题目大概像一下图片一样:

题目剖析:网站MIME类型不支持剖析.data类型文件,这个.data文件就是你Web项目打包后Build包里存在的几个文件。
解决方法:打开IIS管理器,手动添加MIME类型。


MIME类型:application/octet-stream
同理,遇到.wasm文件无法剖析时,同样添加MIME文件类型即可。
添加后,体系会在idenx.html同目次下生成一个Web.config文件,可复制到其他Web项目中,省去手动添加的步骤~
二:StreamingAssets文件夹内的文件无法读取

通常,方便项目的灵活性,我们经常在StreamingAssets文件夹下添加可配置文件,在部署到项目地点的时候,根据实际情况举行修改。如IP地址等。
通常利用:
  1. string filePath = Path.Combine(Application.streamingAssetsPath, "IP.json");
  2. if (File.Exists(filePath))
  3.         {
  4.            
  5.             string jsonContent = File.ReadAllText(filePath);
  6.             Debug.Log("File content: " + jsonContent);
  7.         }
  8.         else
  9.         {
  10.             Debug.LogError("File not found: " + filePath);
  11.         }
复制代码
而在Web打包时,StreamingAssets中的文件是无法通过相对路径的方式举行读取。必须利用UnityWebRequest方式,此方法同样适用于Android平台
详细代码示例:
  1. void Start()
  2.     {
  3.         
  4.         string filePath = Path.Combine(Application.streamingAssetsPath, "IP.json");
  5.          StartCoroutine(ReadFileUsingUnityWebRequest(filePath));
  6.        }
  7.     IEnumerator ReadFileUsingUnityWebRequest(string filePath)
  8.     {
  9.         UnityWebRequest request = UnityWebRequest.Get(filePath);
  10.         yield return request.SendWebRequest();
  11.         if (request.result == UnityWebRequest.Result.Success)
  12.         {
  13.             Debug.Log("File content: " + request.downloadHandler.text);
  14.         }
  15.         else
  16.         {
  17.             Debug.LogError("Failed to read file: " + request.error);
  18.         }
  19.     }
复制代码
二:如安在WebGL端与前端举行通讯

在官方手册中,打包WebGL端后是可以与前端网页举行交互的,方便前端与三维内容举行通讯。或者有些项目,甲方需求Web端部署,同时还要满足二次开辟的需要。
详细链接为:WebGL:与浏览器脚本交互 - Unity 手册
简单来说
Java调用Web只需要:
  1. unityInstance.SendMessage(objectName, methodName, value);
复制代码
其中,__objectName__ 是场景中的对象名称;__methodName__ 是当前附加到该对象的脚本中的方法名称;__value__ 可以是字符串、数字,也可为空。
需要注意的是:Value只支持一个参数,不支持多个参数。
以是在项目中遇到传递多个参数的情况,常常利用标识符 来举行隔离,如:
  1. "12~Value~45"
复制代码
在Unity脚本中,再根据标识符来举行多参数的处置惩罚。
 Unity 脚本调用 JavaScript 函数:
借助 .jslib 扩展名将包罗 JavaScript 代码的文件放置在 Assets 文件夹中的“Plugins”子文件夹下
再在脚本中利用DllImport举行方法导入。(操纵有点复杂,在背面会详细再写一篇专门来介绍,同时介绍调用方面的难点。)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表