1、资源消耗问题。

Unity开发Web 项目,发布出来的项目是很消耗内存资源的,这是Unity引擎决定,我们要做的就是尽可能的优化,通常的方法有降低模型面数,降低贴图的大小,减少点光源,减小烘焙贴图大小等。当然也可以使用three.js开发Web端的三维项目,感兴趣的朋友可以去了解学习一下,但是毕竟它不像Unity有这么集成良好的平台,所以开发起来会比Unity慢很多的,同时还要求你有很好的代码能力和OpenGL知识。

2、连接数据库问题。

Unity连接数据库相信很多人都很熟练了,但是发布成WebGL后就无效了,因为Unity发布WebGL是不支持直连数据库的。那怎么办呢?现在最常见的办法就是Unity传消息到JS页面,然后JS页面再去获取数据库数据,然后传回到Unity中。也就是说JS充当了Unity和数据库之间的一个中转站。

(1)Unity向JS界面传递消息的方法是下面这个:
Application.ExternalCall("SayHello", s);
SayHello是在JS界面定义的方法,s是需要传过去的一个string类型的值。

(2)打包出WebGL后,打开Html页面,编写如下代码:

function SayHello(){    SendMessage("Main Camera", "Receive", s);
}

SayHello是定义的方法,在Unity中调用,SendMessage是传值回Unity的函数,里面的参数:第一个,Unity中绑定接收方法的对象,第二个,Unity中定义的用于接收值的方法,第三个,传回去的string类型的值。

3、视频播放问题。

通常我们最常用的视频播放方法是使用Unity自带的Video Player 组件,可是当我发布出WebGL的时候,他是没用的,所以今天给大家推荐一个一个名为Simple MovieTextures for Unity WebGL的Unity插件,插件下载链接:
(https://download.csdn.net/download/dianmoliu/10436690?utm_source=bbsseo)这是一位博友提供的。
导入插件后,可以看到Sample中有一个demo场景和VideoTest脚本,打开SampleScene场景,并打开VideoTest脚本查看使用方法。场景中只包括一个Cube,将脚本放入并生成WebGL即可看到播放效果。(注意,不能直接调试!)
代码分析
打开 VideoTest脚本,对代码进行分析。

头文件(除了两个基本的,还要加入第三个)

using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;

Start()方法

  WebGLMovieTexture tex;    //创建视频纹理信息public GameObject cube;    //选取视频播放所用的Cubevoid Start () {tex = new WebGLMovieTexture("StreamingAssets/Chrome_ImF.mp4");cube.GetComponent<MeshRenderer>().material = new Material (Shader.Find("Diffuse"));cube.GetComponent<MeshRenderer>().material.mainTexture = tex;}

Update()方法

void Update(){tex.Update();cube.transform.Rotate (Time.deltaTime * 10, Time.deltaTime * 30, 0);}
并且提供了GUI控件功能void OnGUI(){GUI.enabled = tex.isReady;GUILayout.BeginHorizontal();if (GUILayout.Button("Play"))    //播放按钮tex.Play();if (GUILayout.Button("Pause"))    //暂停按钮tex.Pause();tex.loop = GUILayout.Toggle(tex.loop, "Loop");    //是否循环GUILayout.EndHorizontal();var oldT = tex.time;var newT = GUILayout.HorizontalSlider (tex.time, 0.0f, tex.duration);if (!Mathf.Approximately(oldT, newT))tex.Seek(newT);GUI.enabled = true;}

这个方法只能打包成WebGL才能测试,大家可以根据实际需求修改代码。

4、弹框报错问题。

在最后发布出来之后我发现页面经常会报弹框报错,而点击确定后又不影响运行,代码也不报错,一开始不知道该如何解决,后来就想了一下强制关闭的方法,打包成WebGL后,在Build文件夹里会看到一个UnityLoader的文件
打开UnityLoader,可以用这个软件打开

找到弹框信息对应的代码出,把代码注释掉就不会再报错了,当然不是所有的弹框报错都这么做,首先先排除不是Unity和JS代码方面的原因。

找到console开头的就是弹出框的信息,找到对应的注释掉就可以了。

第十六篇:关于Unity开发WebGL遇到的坑相关推荐

  1. 敏捷开发一千零一问系列之十六:如何让开发人员学习产品?

    这是敏捷开发一千零一问系列的第十六篇.(在这里提问,之一,之二,之三,问题总目录) 这个和上一篇"敏捷开发与CMMI谁为主"都是最近一次培训被大家选出来的最有价值问题. 问题 开发 ...

  2. Python之路【第十六篇】:Django【基础篇】

    https://www.cnblogs.com/wupeiqi/articles/5237704.html Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django ...

  3. 喜迎四十万访问量,自荐十六篇好博文

    喜迎四十万访问量,自荐十六篇好博文 作者:赖勇浩(http://blog.csdn.net/lanphaday) 2008年12月8日本博的访问量一举突破 40 万大关,猛回头,发现已经在 CSDN ...

  4. Unity开发webgl学习中文手册的笔记

    Unity开发webgl没做过,看手册怕忘下次难得的找所以放到这来了,可以自行去看手册 桌 面平台的大多数主要浏览器的当前版本都支持 Unity WebGL 内容,但不同浏览器提供的支持程度存在差异. ...

  5. 秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据

    本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/mo ...

  6. CCIE-LAB-第十六篇-NAT+OSPF下发默认路由+校验配置(模块一结束篇章)

    CCIE-LAB-第十六篇-NAT+OSPF下发默认路由+校验配置(模块一结束篇章) 实际中,思科只会给你5个小时去做下面的全部配置 这个是CCIE-LAB的拓扑图 问题 翻译: 根据这些要求1为FA ...

  7. CCNA-第十六篇-综合实验

    CCNA-第十六篇-综合实验 环境以及拓扑图如下 TAG:个人说明,做到最后我才发现hostname打错了,IDC-1打成ISP-1了,不过也没关系,知道就行了,全部的IDC都打成ISP了 还有一个的 ...

  8. java监听数据库操作_第十六篇——JDBC操作数据库之监听器

    JavaWeb应用中,很多的地方都和session有关.因此session相关的事件监听器,在日常工作中非常有用. 有时候我们需要统计当前在线的人数和访问人数总数,此时就可以使用监听器技术来很简单的实 ...

  9. 生日祝福小程序_广告配音剪映零基础入门教程第二十六篇:如何给朋友制作生日祝福视频...

    经常听到小伙伴问到生日祝福视频怎么做,当然我想既然要为他人做生日祝福视频,那么这个人必定是自己身边比较重要的人,而生日又是每个人都是非常重要的,在这种充满意义的时刻,我们想给自己极其重要的人送上一份祝 ...

  10. 第十六篇 Computed 计算属性的应用

    本篇内容主要讲计算属性的相关知识,如果从之前的有一直关注这一系列的文章内容的话,就会发现之前的一些案例可以用其他方法方式去做,比如 第八篇.第九篇 所提及到的模糊查询以及 第十四篇 实现购物车页面的一 ...

最新文章

  1. php调用另一个页面内容,php怎么实现调用另一个页面
  2. Web会话安全分析工具ProxyStrike
  3. 网络营销外包——网络营销外包专员如何提升首页关键词的转化率
  4. Git 2.5增加了工作树、改进了三角工作流、性能等诸多方面
  5. cv dnn识别动作规范 open_OpenCV开发笔记(七十三):红胖子8分钟带你使用opencv+dnn+yolov3识别物体...
  6. Linux服务器---网络配置
  7. pyqt5讲解2:QPushButton,QRadioButton,QCheckBox
  8. 如何将XML文件导入Excel中
  9. TouchJSON的简单使用
  10. Hamilton四元数
  11. 简单的BBcode parsing
  12. 中科大和东北大学计算机考研,我国39所985高校,一共被分为五个档次,复旦大学处于第二档...
  13. java webrtc视频会议_JAVA webRtc的实现视频会议系统
  14. pb与java_Java中使用PB教程
  15. 用java判断是否是合法邮箱即验证邮箱格式
  16. mysql显示中文乱码问题解决办法(部分情况下适用)
  17. windows蓝牙编程—— 0 获取本地蓝牙的句柄和信息
  18. 【数据结构】循环队列的front,rear指针以及队列满的条件、计算队列长度
  19. Windows、Unix、Mac不同操作系统的换行问题 回车符\r和换行符\n
  20. python微信朋友圈刷图_用python中的itchat可视化微信朋友圈

热门文章

  1. bootstrap必填红心_bootstrap如何设置表单必填
  2. Frank-wolfe算法多OD对matlab实现
  3. 【Shawn-LeetCode】Two Sum
  4. SageMath浅尝
  5. 卡特兰数 史上最全最详细讲解!
  6. 汇编rep movsb,rep stosb,repne scasb
  7. SAP中常用SM系列事务代码总结
  8. java 时间英文格式_Java英文日期格式解析
  9. Bootstrap vs Foundation vs Bulma vs Semantic vs UIkit
  10. SphereEx张亮:“开源和商业化不能形成对立”