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

unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac),第1张

概述下载UniWebView这个插件支持Android、IOS和Mac,不支持Windows。百度网盘下载链接:https://pan.baidu.com/s/1wM7frlsW4qdiUA0WHu7exA提取码:sel8Unity Asset Store下载链接:https://assetstore.unity.com/packages/tools/network/uniwebview-... 下载

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);

然后调用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" />
@L_404_6@其他

背景透明: 在 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)全部内容,希望文章能够帮你解决unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/998851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存