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中局部显示的方法

 

  1. 因为UniWebView2调用的是Android和Ios底层的WebView的接口,然后进行绘制,是脱离UGUI渲染层级的, 所以UI都会被UniWebView盖住.

而要局部显示UniWebView则需要调用API接口.

Unity UniWebView UGUI 局部显示 版本2.9

设置UniWebView中的insets属性,主要通过设置距离屏幕边框的距离

然而Unity UGUI框架并不能直观的给出这些参数,所以就要通过一个方法来计算出来

Unity UniWebView UGUI 局部显示 版本2.9

 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系统中获取的屏幕宽度不是以像素为单位的,所以需要通过转换

Unity UniWebView UGUI 局部显示 版本2.9