WebGL问题总结

2022-08-29 15:29:49 浏览数 (2)

1.中文的输入输出问题:

1).输出问题:Unity的默认字体Arial在WebGL平台并不能正常的显示,解决方法也简单,自己创建一个字体或者去资源商店里找一个,替换所有的Text文本字体。

2).输入问题:InputField在WebGL平台里不支持中文输入,在Gihub上下载了一个插件-WebGLNativeInputField。插件写了一个InputField的派生类。

添加输入框时将InputField替换为WebGLNativeInputField组件。

DialogType是一个枚举类型,包含Prompt popup和Overlay Html两个值,是弹出输入框的两种形式,都可以使用,但各自有一个问题:

1).Promt pupup 该输入框只显示单行,如果有大量输入的需求,使用起来很是麻烦。

2).Overlay Html 该类型输入框不支持全屏,如果程序在全屏运行,弹出该输入框时会退出全屏。但可以将它修改为显示多行,需要对插件进行修改

修改:

使用Notepad 或者记事本等文本编辑工具打开该插件

修改SetupOverlayDialogHtml函数中的一行代码:

就是将input修改为textarea文本域。

2.视频播放问题:

VideoPlayer组件,Source来源有两种形式,VideoClip和URL

使用VideoClip,不管是在检视面板将视频拖拽赋值或者是代码动态赋值,在WebGL平台均不能播放,只能使用URL形式,填写视频文件的路径,打包后才能正常播放视频。

3.文件读取问题:

一度认为WebGL不支持使用StreamAssetsPath路径,但测试发现是可以正常使用的,使用System.IO.File读取该路径下的配置文件会失败是因为,使用File类相关函数时,我们真实填入的WebGL平台下的路径参数,是以file:///开头的,但是File读取后的路径开头却是/file:/ 所以结论是,在WebGL平台下不要使用System.IO.File类。

4.URL链接问题:

在PC平台使用Application.OpenURL函数可以打开指定的网页,但是在WebGL端使用该函数打开网页时会覆盖我们的程序页面,没有其他重载方法。只能自己写个插件,用js代码打开新的网页。在Plugins文件夹下创建一个 .jslib文件。

然后在unity中通过调用声明好的外链方法实现关联,再用一个静态方法进一步封装,方便其他类调用。

使用我们自己编写的OpenURL函数代替Application.OpenURL即可。

0 人点赞