这两天做了一个项目,从已有的通讯框架基础上修改。使Unity导出的WebGL的包能和服务器通讯,Jsp页面也能和服务器通讯。第一次做通讯的项目。踩了不少坑记录一下。
本次使用的通讯框架服务器是java、客户端是Unity开发的。使用 http 实现弱联网的简单通讯

Unity开发WebGL注意事项

1、导出WebGL包时,目录路径不能有中文

2、打出来的Web页面显示不出中文来,是因为web页面不能获取系统的字体,所以项目中使用的字体文件要导入项目中

3、在Unity3d 2017中www加载如果没有问题时www.error不在是等于null,而是""。以前版本中关于类似www.error != null的判断将失效。

4、如果web页面报404了,有时候是因为程序中连接地址填错了。

5、在这次开发遇到了,服务器能收到web的消息,但是web收不到服务器的消息。web页面报错了。是因为跨域问题,解决方案:在服务器端给客户端输出的函数中,添加:response.setHeader(“Access-Control-Allow-Origin”, “*”)。就ok了

6、WebGL不支持多线程和C#的网络环境,可以用协程、Websocket代替;(在携程中千万别用死循环哦 ! )

7、WebGL在服务器下载资源,服务器端尽量能做到资源拆分,或者资源依赖打包。不然Web页面加载时间过长影响体验

修改java服务器注意事项

配置拦截、中文乱码

1、在修改服务器端的代码时,新加一个处理数据的java脚本客户端访问不到,报:404错误(The requested resource (******) is not available.);是因为需要配置拦截器,找到服务器端的Web.XML文件,应该WebRoot→WEB-INF文件夹下。配置你新加的脚本就可以了,配置内容如下:

<servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>TestHandle</servlet-name>
    <servlet-class>com.Gallon.Servlets.TestHandle</servlet-class>
  </servlet>
<servlet-mapping>
    <servlet-name>TestHandle</servlet-name>
    <url-pattern>/TestHandle.do</url-pattern>
</servlet-mapping>

在上面:TestHandle 换成你自己新加的脚本名就可以了。

2、服务器与Jsp页面连接时,出现了中文乱码的问题,解决方案:
(1)Jsp使用 post 通讯中文乱码:服务器端在 post 函数二次编码:在函数里面加一句:request.setCharacterEncoding(“UTF-8”);在控制台打印验证就ok了。
(2) Jsp使用 get 通讯中文乱码:有点麻烦,去问度娘吧,或者jsp页面别用Get传输数据了。

WebGL使用浏览器打不开的问题:

WebGL兼容这里只写了:Edge、谷歌、火狐、IE

1、Firefox(火狐)打不开WebGL的解决方案
(1)打开火狐,在地址栏搜索:about:config:回车→继续
(2)在选项顶部搜索 webgl.force-enabled ;将该选项值设为false
(3)再次搜索:webgl.disabled ;将该选项的值设为false
(4)再次搜索:security.fileuri.strict_origin_policy ;将该选项设为false

2、Chrom(谷歌)打不开WebGL的解决方案
. . Windows: 找到谷歌浏览起的快捷方式,鼠标右击,进入属性,设置Chrome的快捷方式属性,在“目标”后面加上 --enable-webgl --ignore-gpu-blacklist --allow-file-access-from-files,注意前面有个空格,重新打开Chrome即可。
. .(如果你不是WebGL的开发者可以不用加 --allow-file-access-from-files)
谷歌chrome://flags/ 里面找到WebGL2.0 都 开启

3、Edge:我使用的Microsoft Edge 不经过任何设置 本身就支持WebGL。

4、IE:万能的神,我找的资料都说是E11之后就支持WebGL了,但是我的IE就是打不开,直到现在还没有找到解决方案,以后如果发现解决方案会随时更新。

最后甩一个测试你浏览器支不支持webGL的网址:https://get.webgl.org/