由于UniWebView只支持移动端,在PC开发电脑上即使编辑模式也无法显示,这样造成调试很不友好,需要不断出包测试,很不方便。为了避免麻烦,这里有些基本概念,可以避免重复尝试 1、UniWebView是基于Activity的,UniWebView和UnityPlayerActivity运行于不同的Activity,所以不要尝试把UniWebView插入Unity的3D场景了 2、由于我们是在Unity3D场景节点上加载UniWebView,在UniWebView创建并加载显示后,就会位于窗口前端(后创建的Activity位于最前端)。 3、由于UniWebView位于前端,会遮挡掉Unity3D的按钮,可以设置UniWebView的Left Top Right Bottom边界距离,让UniWebView不全屏显示,这样可以将Unity3D的操作按钮放置在UniWebView显示范围以外 4、可以通过监视UniWebView的自定义协议(uniwebview://)链接跳转实现Unity3D与网页交互,从而实现通过页面按钮关闭浏览器。 HTML代码
<a href="uniwebview://close?param=1"><img src="image/x.png" alt="" style="width: 100%;"></a>
Unity3D C#代码
view.OnReceivedMessage += (webView, message) =>
{
if ("close" == message.path)
{
HidePanel(true);
}
};
message参数为解析后的链接结构体 message.Scheme - 协议:uniwebview message.Path - 路径:close message.Args - 参数:{“param”:1}
5、UniWebView可以被安卓的后退按钮关闭,关闭触发的是UniWebView的销毁,因此,要在关闭时把保存的UniWebView的指针设置为null
view.OnWebViewShouldClose += (webView)=>
{
this.uniWebView = null;
return true;
};
6、ToolBarShow在安卓系统上没用,安卓系统不会显示浏览器工具栏 7、动态加载UniWebView要用Load(url)加载页面,用UniWebView.url=url不会加载
public UniWebView CreateUniWebView(string url, int top, int left, int bottom, int right)
{
GameObject go = new GameObject();
go.transform.parent = transform;
UniWebView view = go.AddComponent<UniWebView>();
view.insets = new UniWebViewEdgeInsets(top, left, bottom, right);
view.SetShowSpinnerWhenLoading(true);
view.autoShowWhenLoadComplete = true;
view.Load(url);
return view;
}
|