持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情
概述
本篇文章主要分享一个作者平时在开发过程中使用过的感觉还比较好的插件,希望对各位日后开发过程中能够有所帮助。本篇文章主要分享的插件是Embedded Browser 。一款非常好用的Unity内置浏览器插件。
使用及下载
最近开发了个项目,使用前段开发出来的网页需要嵌套到Unity中,所以就找到这款插件,个人觉得还是很有用,虽然有坑,但是也不是不能解决。下面就一起来看一下这个插件吧。 首先看官网
我们将插件导入到Unity中,打开最简单的一个示例场景,SimpleBrowser
运行工程,我们会发现其和平时使用的浏览器非常像,有地址栏,后退前进按钮,还有刷新等功能
我们可以通过Hierarchy面板发现,其主要的功能实现在BrowserGUI上挂载的组件
在Browser组件上,我们可以看到,上面有URL地址设置,浏览器的大小,背景颜色,缩放,以及一些刷新,打开新的URL等等按钮,这些否可以在代码中通过动态更改的方式进行实现。
我们找到示例工程中使用的简单的控制代码,SimpleController。我们一起来看一下,所有的功能都是在Browser browser
下实现的。
首先是打开新的网址,这里使用的是监听输入框的方式进行打开,首先监听输入框是否输入完成,输入完成后判断是否按下了回车确认,确认了就执行跳转页面
urlInput.onEndEdit.AddListener(v => {
if (Input.GetKey(KeyCode.Return) || Input.GetKey(KeyCode.KeypadEnter)) {
//only nav if they hit enter, not just because they unfocused it
urlInput.DeactivateInputField();
GoToURLInput();
} else {
//revert text to URL if it updated while they were typing
urlInput.text = browser.Url;
}
});
public void GoToURLInput() {
browser.Url = urlInput.text;
}
另一个是监听打开网页后网址是否有变化,有则更新显示
//Update text field when the browser loads a page
browser.onNavStateChange += () => {
if (!urlInput.isFocused) {
//but only if it's not focused (don't steal kill something the user is typing)
urlInput.text = browser.Url;
}
};
Embedded Browser使用的坑
1、该插件默认无法输入中文
解决:首先找到PointerUIGUI.cs脚本,打开并找到OnSelect()方法,Input.imeCompositionMode默认选项是Off,我们将其改为On即可实现中文输入(下图为默认设置)
Input.imeCompositionMode = IMECompositionMode.On;//CEF will handle the IME
2、该插件无法播放视频
解决:该插件不支持播放MP4等常规格式视频,因为该插件使用的开源谷歌内核,而h264需要高额的专利费,官方给的说法是只能够支持WebM/VP9.这里我们使用的解决方案是,前端给我一个视频地址,通过Unity制作一个播放器出来实现视频的播放
结束
本篇文章就介绍到这里,希望对各位在开放过程中能够有所帮助。