Unity UniWebView UGUI 局部显示 版本2.9
使用了UniWebView有一段时间了, 在这边想总结一下心得.
现在项目中使用的是2.9.1的版本, 而官网已经发布到了3.3, 3之后的API和2的版本相比改动还是很大的,所以在网上查资料时很多是3的版本.
基于目前2.9的版本也能支持项目中的需求,所以暂时没有更新
具体的不同可以看这里https://docs.uniwebview.com/guide/version-highlight.html
所以这边可以算是对UniWebView 2代版本的一个总结
具体的插件导入就不写了, 网上有很多.
这边主要记录下 在unity中局部显示的方法
-
因为UniWebView2调用的是Android和Ios底层的WebView的接口,然后进行绘制,是脱离UGUI渲染层级的, 所以UI都会被UniWebView盖住.
而要局部显示UniWebView则需要调用API接口.
设置UniWebView中的insets属性,主要通过设置距离屏幕边框的距离
然而Unity UGUI框架并不能直观的给出这些参数,所以就要通过一个方法来计算出来
protected virtual UniWebViewEdgeInsets InsetsForScreenOreitation(RectTransform rect)
{
Vector3[] fourCornerArray = new Vector3[4];
rect.GetWorldCorners(fourCornerArray);
Vector2 bottomLeft = UIManager.GetInstance().mainCamera.WorldToScreenPoint(fourCornerArray[0]);
Vector2 topRight = UIManager.GetInstance().mainCamera.WorldToScreenPoint(fourCornerArray[2]);
float Top = Screen.height - topRight.y;
float Left = bottomLeft.x;
float Bottom = bottomLeft.y;
float Right = Screen.width - topRight.x;
return new UniWebViewEdgeInsets
(
UniWebViewHelper.ConvertPixelToPoint(Top, false),
UniWebViewHelper.ConvertPixelToPoint(Left, true),
UniWebViewHelper.ConvertPixelToPoint(Bottom, false),
UniWebViewHelper.ConvertPixelToPoint(Right, true)
);
}
通过这个方法传入一个需要显示的方框就可以得到四个方向的距离
ConvertPixelToPoint静态方法主要是用来在ios系统中做调整,因为在ios系统中获取的屏幕宽度不是以像素为单位的,所以需要通过转换