一、目前有三种方式可以实现在Unity工程中实现内嵌网页的功能:

1、  UnityWebCore:只支持Windows平台,调用浏览器内核,将网页渲染到mesh,作为gameObject。

2、  Unity-Webview:只适用于Andriod和ios平台,调用移动平台的Webview。

3、  UniWebView:适用于Andriod、ios和Mac os,在移动端效果最好。2.0版本之后支持WP8,不支持windows桌面系统,包括编辑器状态。

二、使用的主要思路

<span style="font-size:18px;">      void OpenURL()  //打开网址
{
_cachedView.TitleLabel.text = "资讯";
_webView = _uiTrans.gameObject.GetComponent<UniWebView> ();
if (_webView == null)
{
_webView=_uiTrans.gameObject.AddComponent<UniWebView>();
//_webView.OnReceivedMessage += OnReceivedMessage;
//_webView.OnLoadComplete += OnLoadComplete;
//_webView.OnWebViewShouldClose += OnWebViewShouldClose;
//_webView.OnEvalJavaScriptFinished += OnEvalJavaScriptFinished;
_webView.InsetsForScreenOreitation += InsetsForScreenOreitation;
}
if(InformationManager.Instance.ArticleType == EArticleType.Notice)
{
_webView.url = AppManager.Instance.GameIP + "/gatj?ad=" + InformationManager.Instance.ArticleId;
}
else if(InformationManager.Instance.ArticleType == EArticleType.V)
{
_webView.url = AppManager.Instance.GameIP + "/detaifdav.jsp?articleId=" + InformationManager.Instance.VId;
}
_webView.Load();    //加载网页
ShowOrHide(true);       //控制显示
}
public void ShowOrHide(bool flag)
{
if(flag)
{
_webView.Show ();
}
else
{
_webView.Hide();
}
}
void CloseWeb(UniWebView webView)   //关闭网页
{
webView.Hide();
UnityEngine.Object.Destroy(webView);
//webView.OnReceivedMessage -= OnReceivedMessage;
//webView.OnLoadComplete -= OnLoadComplete;
//webView.OnWebViewShouldClose -= OnWebViewShouldClose;
//webView.OnEvalJavaScriptFinished -= OnEvalJavaScriptFinished;
webView.InsetsForScreenOreitation -= InsetsForScreenOreitation;
_webView = null;
}</span>

代码来自实际项目,只提供主要思路。

调用安卓和ios自身平台的方法封装在jar和mm文件中,提供了UniWebView类调用这些方法。打开网页时将UniWebView作为组件挂在一个gameObject上。将网址字符串赋值给UniWebView中的url字段,调用Load()方法加载网址,Show()方法显示在屏幕上,对应Hide()方法。关闭时,先隐藏,再销毁UniWebView组件。

UniWebView类中提供了一些回调方法,本项目中用到了UniWebViewEdgeInsets。默认打开网页是全屏方式,UniWebViewEdgeInsets是使网页偏移。也就是控制网页显示的区域和位置。需要注意,在安卓平台插入的值以像素为单位,在ios平台,因为不同机型屏幕scale值不同,同一个值插入效果不一样,建议判断机型根据效果将数值写死:

<span style="font-size:18px;">      UniWebViewEdgeInsets InsetsForScreenOreitation(UniWebView webView, UniWebViewOrientation orientation)
{
#if UNITY_IOS
var iphoneGen=UnityEngine.iOS.Device.generation;
if(iphoneGen==UnityEngine.iOS.DeviceGeneration.iPhone5S)
{
topInset=54;
bottomInset=34;
}
else if(iphoneGen==UnityEngine.iOS.DeviceGeneration.iPhone6)
{
topInset=64;
bottomInset=40;
}
else if(iphoneGen==UnityEngine.iOS.DeviceGeneration.iPhone6Plus)
{
topInset=70;
bottomInset=44;
}
#endif
if (orientation == UniWebViewOrientation.Portrait)
{
return new UniWebViewEdgeInsets(topInset,0,bottomInset,0);
}
else
{
return new UniWebViewEdgeInsets(topInset,0,bottomInset,0);
}
}</span>

三、需要注意的问题

在安卓平台使用最大的问题是Unity失去焦点的问题。经过使用OnApplicationFocus方法测试,调用平台WebView打开界面时默认打开另一个Activity,Unity本身为一个Activity,当打开另外一个Activity时Unity会失去焦点,此时焦点不在Unity程序身上,如果锁屏或者按Home键再打开后只会调出最后一个显示的Activity,也就是UniWebView打开的网页,而不是Unity程序。也就是在打开网页的界面按下Home键或者锁屏后程序将无法正常返回。主要的问题在于Unity程序和打开的网页属于不同的Activity,解决的方法为更改Unity工程中的安卓配置文件,使一个Activity继承于另一个,显示在同一个Activity上。

另外,打开的网页有缓存。经过测试,在打开一个网页后,修改网页,再次打开,显示的还是之前的网页,关闭Unity程序也无法清除缓存。解决的方法为关闭网页时调用插件自身的CleanCache ()方法,清除缓存,这样每次打开的都是新的网页。

Unity中内嵌网页插件UniWebView使用总结相关推荐

  1. Unity中内嵌网页插件 UniWebView,缩放网页

    https://mp.weixin.qq.com/s/cesU-Jlxf_a_lGxIv6q_yQ 转载开发者俱乐部并且修改了 https://docs.uniwebview.com/api/ 插件文 ...

  2. Unity集成内嵌网页插件-支持Android和IOS

    本文所用到的插件,是修改自一个日本人keijiro的代码.他的源码地址为:https://github.com/keijiro/unity-webview-integration 为更易于使用,本插件 ...

  3. Unity内嵌网页插件

    Unity内嵌网页插件 这里我用到的内嵌插件是EmbeddedBrowser3.1.0版本,这是一个收费插件,笔者大大百度了好久,哈哈哈,最后还是选择掏钱买了一份,主要是实在是白嫖不到啊,倒是找到一个 ...

  4. Unity发布内嵌网页的PC客户端

    Unity开发PC客户端内嵌网页的工具名为:SimpleWebView,资源本人已经上传至CSDN共享:MAC.android.ios端需要用的插件为UniWebView,鉴于UniWebView教程 ...

  5. mfc 内嵌 本地html,MFC程序中内嵌网页,附示例工程

    最近在课程设计,因为小悠太懒了,是在不想用C++完成一些简单的文件上传下载操作,于是就想着将网页内嵌到程序中,上传下载神马的就直接使用网页Web来完成就好了,本示例中将演示在MFC程序中内嵌一个htm ...

  6. Unity Webgl内嵌网页页面

    Unity Webgl端有时候会有这样一个需求,在Unity界面上内嵌一个网页,并且可以在界面上把这个网页关掉(不是重新打开新的标签页) 效果如下: 现在来实现这个功能: 1.在Assets文件夹下新 ...

  7. Unity 内嵌网页

    uniwebview 官网 http://uniwebview.onevcat.com/reference/class_uni_web_view.html http://uniwebview.onev ...

  8. vs2015c语言内嵌汇编,C#中内嵌资源的读取

    起因 作为一个从Cpper转到C#并且直接从事WPF开发的萌新来说,正式编码过程中碰到了不少问题,一路上磕磕碰碰的.因为软件设计需求上的要求,需要将一些配置文件(XML.INI等)内嵌到程序中,等需要 ...

  9. unity 内部嵌入的网页插件中播放视频网页的问题

    3D WebView 主要实现在unity 中制作网页浏览器! 3D WebView简单教程地址:unity 内嵌网页简单流程(3D WebView 3.14.1)_云小川的博客-CSDN博客 详细教 ...

最新文章

  1. 使用委派调用对象的方法
  2. C++二维数组new小结(zz)
  3. php9宫格抽奖程序_php抽奖算法(适用于九宫格、大转盘)
  4. tensorflow object detection API训练错误解决
  5. 数据分析必备工具书:Python官方中文文档
  6. Linux源码安装mysql 5.6.12(cmake编译)
  7. arduino光敏+LED+数码管+蜂鸣器综合实验
  8. pytorch---之随机种子初始化
  9. 【漏扫工具】awvs、appscan、xray下载、安装、使用方法(附带网盘链接)
  10. mysql写保护_简易修改注册表!小白都会去掉u盘写保护
  11. 计算机更改tcp端口代码,windows如何使用脚本把一个网络打印机的端口从WSD修改成TCP/IP?...
  12. Linux:文件系统和数据资料
  13. C语言加法测试题,c语言50练习题.doc
  14. Codeforces 633H Fibonacci-ish II【线段树】
  15. 在python中month函数的用法_python @classmethod 的使用场合
  16. android沉浸式模式简书,Android-沉浸式模式
  17. 深圳百元赠送话费11月20日前启动充
  18. 更名通知 || 初心未改,只为更好,好嗨游戏来了
  19. qgridlayout 滚动时固定第一行_固定轴承内外圈,哈尔滨轴承小编为您支几招!
  20. NIB 和 XIB 的区别 转载

热门文章

  1. 动态正则化权重系数_蘑菇街增量学习番外篇三:deepFM的动态正则实践
  2. 安卓开发团队 CM团队和MIUI团队的介绍
  3. 基于JAVA二手交易系统设计与实现 开题报告
  4. 浪潮Inspur_NF5140 M3单盘直通无法进系统
  5. 什么东西可以改善睡眠质量?最好的助眠神器推荐
  6. 解决移动硬盘不能被识别「2.5寸SATA固态+硬盘盒」
  7. 如何从图像来判断闭路监控系统的故障原因
  8. 教育网网络电视超强集合
  9. 2022年湖南成人高考准考证打印时间和方法
  10. 项目进行时-安全整改-docker中的mysql升级