下载

UniWebView这个插件支持Android、IOS和Mac,不支持Windows。
百度网盘下载链接:
https://pan.baidu.com/s/1wM7frlsW4qdiUA0WHu7exA
提取码:sel8

Unity Asset Store下载链接:
https://assetstore.unity.com/packages/tools/network/uniwebview-3-92605
价格: $25


用法

添加UniWebView在一个GameObject上
对UniWebView.url赋值
可以设置一些在打开浏览器的时候的一些回调

webView.OnLoadComplete += OnLoadComplete;
webView.OnReceivedMessage += OnReceivedMessage;
webView.OnEvalJavaScriptFinished += OnEvalJavaScriptFinished;//...void OnLoadComplete(UniWebView webView, bool success, string errorMessage)
{if (success) {webView.Show();} else {Debug.LogError("Something wrong in web view loading: " + errorMessage);}

设置webview的长宽高,这里都可以直接在ui上面显示浏览器

webView.insets = new UniWebViewEdgeInsets(5,5,5,5);

然后调用webView.Load()方法即可


Web页面和 Unity游戏逻辑的通信

1. UniWebView发送消息给 Unity
这个建议使用 url 方案。UniWebView 将监听 以 uniwebview://开始 的 url
如果玩家在 Web 页面点击了 Url 链接, UniWebView 将会解析为一个 UniWebViewMessage 对象 ,然后引发 OnReceivedMessage 事件。 一个 UniWebViewMessage 对象包含 一个路径字符串(其中有url 和args 参数字典)。
例如当点击了链接 : uniwebview://move?direction=up&distance=1
将被解析为:

path = "move"
args = {direction ="up",distance ="1"
}

你在 监听了 OnReceivedMessage 事件 的回调中, 会得到 UniWebViewMessage对象,然后实现自己的逻辑

void OnReceivedMessage(UniWebView webView, UniWebViewMessage message)
{Debug.Log(message.rawMessage);if (string.Equals(message.path,"move")) {// It is time to move!// In this example:// message.args["direction"] = "up"// message.args["distance"] = "1"}
}

2. Unity发送消息到 UniWebView
你可以运行任何的 javescript 页面, 通过使用 EvaluatingJavaScript 你能调用并运行Javascript, 这个JavaScript代码可以是你游戏脚本中的字符串形式。 你能监听 OnEvalJavaScriptFinished 事件, 来处理这个结果。


Android设置AndroidManifest.xml

在导入这个插件之前, 如果在您的项目中已经有一个AndroidManifest.xml 文件,你不应该从 UniWebView 包导入 AndroidManifest.xml 文件了(如果没有就直接全部导入就行了),而是您需要手动更新该文件。
1 在项目中的 Assets/Plugins/Android路径下 ,使用文本编辑器打开 AndroidManifest.xml文件
2 文件中 搜索 android.intent.action.MAIN(肯定有且只有一个),然后按照下面的步骤操作:
上面步骤2的搜索结果位于<activity></activity>标记对之间,插入下面两行数据

<meta-data android:name="android.app.lib_name" android:value="unity"/>
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />

3 在<activity...>标记中,将 android: name的值更改为"com.onevcat.uniwebview.AndroidPlugin"。这将使用 UniWebView 的activity 来启动你的游戏。这样做,这样我们可以避免 web 视图在 安卓系统的一些问题

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

4 同样的在 <activity...>标记中,添加 android: hardwareAccelerated ="true"android:windowSoftInputMode="adjustResize"。这将使安卓系统提供 html5功能
最终,会变成这样

<activity android:name="com.onevcat.uniwebview.AndroidPlugin"android:label="@string/app_name"android:hardwareAccelerated="true"android:windowSoftInputMode="adjustResize"android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER"/></intent-filter><meta-data android:name="android.app.lib_name" android:value="unity" /><meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
</activity>

最后,添加访问互联网的权限, 如果有了就不用添加了。 在</manifest>标记 之前 添加

<uses-permission android:name="android.permission.INTERNET" />

其他

背景透明: 在 iOS 中,默认情况下web 视图还有一个灰色的背景 。你可以使用 SetTransparentBackground来设置为 背景透明

加载进度框: 就是表示加载进度,以改善体验。您可以禁用 和 显示,接口SetShowSpinnerWhenLoading;也可以自定义标签文本,接口SetSpinnerLabelText

Back 按键 和导航工具栏按钮支持: 用户可以使用后退按钮在 web 页面之间导航,Android 设备上像在本机浏览器中一样。iOS 是一个带有导航按钮的默认工具栏

向前 和 向后: 浏览器的两个行为,您可以在你的游戏中控制网页导航,通过 GoBackGoForward方法

清理缓存: web 视图将保持 url 请求,默认情况下,这可能会使旧的页面显示,即使您更新您的 web 页。使用 CleanCache来解决这一问题

视频播放: 在web 视图 播放视频,只需加载url

加载本地文件 和 html 字符串: 给定设置 本地文件的 url,或 调用 LoadHTMLString具有 html字符串的值,您可以加载本地的内容

不止一个 web 视图: 如果您希望在你的游戏中显示 多个 web 视图,那就是 有多个 挂有UniWebView组件的GameObject 而已

unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac)相关推荐

  1. unity内置浏览器的使用

    对于Unity中显示网页方法,先引用下别人的总结 目前有三种方式可以实现在Unity工程中实现内嵌网页的功能: 1.  UnityWebCore:只支持Windows平台,调用浏览器内核,将网页渲染到 ...

  2. HBuilder X内置浏览器插件安装失败解决方案

    我是最近下载的HBuilder X,今天要去用的时候,想去下载一下插件,发现其他插件都能下载安装成功,而内置浏览器插件却总是安装失败.注意,提示的是安装失败哦,于是我便去百度寻求帮助. 关闭360,火 ...

  3. VS code内置浏览器插件-Preview on Web Server

    VS code内置浏览器需要自己下载安装,下面我们就来看看下载安装使用VS code内置浏览器的图文教程. 软件名称: Visual Studio Code(代码编辑器) v1.51.1 64位 中文 ...

  4. 微信调试--微信内置浏览器为什么对pharser.js支持这么差???

    微信内置浏览器对于html5的支持如何? 是否可以等同于webkit内核的浏览器?CSS3动画的支持程度怎么样? 添加评论 分享 按投票排序按时间排序 31 个回答 28赞同 反对,不会显示你的姓名 ...

  5. 微信内置浏览器下载APP(包括安卓apk和ios的ipa,pxl,deb)的解决方案

    做过微信推广的朋友都知道,在微信内直接下载app是不可以的,这个是微信做了限制的原因.但是微信是目前用户活跃量较大的平台之一,App推广肯定离不开微信生态圈.那我们如何在微信内置浏览器内直接下载app ...

  6. HBuilder X 下载安装内置浏览器失败

    文章目录 前言 解决方法 参考 前言 今天周末闲着没有什么事,就抽空玩玩所谓很强大跨平台的uni-app,HBuilder X下载解压即可使用,写一个简单demo,一切都很顺利,但每次修改调试看结果都 ...

  7. ASP.NET MVC Display Mode 移动端视图 配置对微信内置浏览器的识别

    最近在捣鼓一个稍微有点low的商城网站,没有计划做app却要求有个wap版,而前端又没有做成响应式,时间WTF,直接利用了asp.net mvc的Display Mode Provider. 使用方式 ...

  8. 安卓下微信内置浏览器视频出现解析错误

    原文地址 今天给客户做一个微信端的HTML5的动画页面,页面内有一个视频文件,今天上线,这是前提.刚上线不久,客户的服务器便不堪重负,为了解决问题,我们将该页面的媒体文件放在自己的服务器上.问题来了, ...

  9. 谷歌浏览器配置微信浏览器_在 Chrome (谷歌浏览器) 中模拟微信内置浏览器

    微信和 QQ 内置浏览器 UA iOSQQ 内置浏览器 UA: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) > AppleWe ...

  10. 利用Chrome在PC电脑上模拟微信内置浏览器

    1.先了解安卓微信和Ios微信的UA(User agent:用户代理) 安卓微信UA: mozilla/5.0 (linux; u; android 4.1.2; zh-cn; mi-one plus ...

最新文章

  1. linux下的SIGINT的作用,signal(SIGINT,stop)的问题,大家进来看下!!!
  2. HDU1533 Going Home(最小费用最大流 spfa模版)
  3. 用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级
  4. UDP和TCP协议包大小的计算
  5. sql server相关的命令行
  6. Nginx屏蔽个别User-Agent蜘蛛访问网站的方法
  7. shell脚本编程 逐行处理文本 将字符串转化为数组
  8. MSAgent 详细解说(下)
  9. python 爬取视频真实地址_java_爬虫_从腾讯视频播放界面爬取视频真实地址
  10. 关于数据元、元数据、主数据、交易数据、主题数据、数据资源、大数据、数据湖等数据相关概念理解和总结
  11. Redhat开机丢失引导
  12. 影子系统 是怎么一回事!-间歇博客
  13. 专利写作规范及如何写一篇专利
  14. sort(function(a,b){return a -b})函数排序问题
  15. 如何使用robots.txt及其详解
  16. 一些可以使用的网上图片地址
  17. 02H5C3-11. Nginx中部署静态网站
  18. grpc系列1-K8S集群,VIP,grpc._channel._InactiveRpcError connection reset by peer解决方案 Paddleserving服务化部署
  19. 文献记录(part23)--Learn to model blurry motion via directional similarity and filtering
  20. 电商交易规律、RFM分类

热门文章

  1. PCIE 协议分析工具
  2. python如何读取二进制文件为图片_python之读取二进制文件
  3. OsgEarth加载shp文件问题以及shp文件介绍
  4. GX Works2使用问题记录
  5. 阿里大佬推荐初学者练习的 Java 开源项目
  6. Gbase与oracle数据库的区别
  7. Python教学视频(七)分支结构
  8. C语言的源代码文件、目标文件和可执行文件
  9. 百度之星冠军分享:AI图像赛事入门
  10. ad18的一个bug,修改不了封装