美文网首页u3d开发踩坑实录
unity3d游戏内嵌网页插件-uniwebview3

unity3d游戏内嵌网页插件-uniwebview3

作者: 长林江左梅郎 | 来源:发表于2020-06-10 16:59 被阅读0次

    项目之前用的uniwebview2.x的版本,但是在2020年4月份ios审核不再支持UIWebView,需要使用WKWebview来替代,所以需要更新插件,

    下面提供了百度网盘下载3.17版本链接:

    uniwebview3.17

    提取码:vo9p

    uniwebview3介绍如下:

    位置和大小

    UniWebView有两种方法可以确定Web视图应在屏幕上显示的位置。

    设定框

    您可以使用Frame属性设置位置和大小。

    产地和大小

    您可以在屏幕中定义一个rect并将其设置为Web视图的框架。UniWebView使用的坐标系是基于左上角的坐标。原点(0,0)是屏幕的最左上角。屏幕尺寸由Unity Screen类型定义为Screen.width和Screen.height:

    在此坐标系中,您可以非常轻松地设置Web视图的位置和大小:

    // Make the web view full screen:

    webView.Frame = new Rect(0, 0, Screen.width, Screen.height);

    // Make the web view take the bottom half of screen:

    webView.Frame = new Rect(0, Screen.height, Screen.width, Screen.height / 2);

    // Make the web view insets from all sides by 10 units:

    webView.Frame = new Rect(10, 10, Screen.width - 20, Screen.height - 20);

    尽管您可以像上面的最后一个示例一样设置单位的绝对数量,但由于设备的屏幕尺寸各不相同,因此在移动设备中几乎没有意义。因此,使用该Frame属性的正确方法是将其设置为当前屏幕高度和宽度的相对值。

    如果您不关心屏幕解决方案和屏幕大小等问题,则固定值完全可以,但是要准确地适应所有目标设备非常困难。因此,我们建议仅在将Web视图的大小设置为屏幕的相对大小时才使用它。

    如果要控制位置和大小,UniWebView支持另一种方法来从Unity UI和Canvas Scaler的“分辨率和设备独立性”概念中受益。

    重要

    Frame如果您使用“使用参考UI元素”中所述的方法(或者说,如果ReferenceRectTransform属性不是null),则该属性将被忽略。

    ReferenceRectTransform是UniWebView可以设置引用的属性RectTransform。A RectTransform是您的UI元素的一部分,它定义了Rect附加到转换的。通过将画布与Canvas Scaler结合使用,可以将Unity UI设计为适合多种分辨率。如果您不熟悉它,建议您先阅读“多种分辨率设计UI”

    您可以将UniWebView的位置和侧面定义为RectTransformUI元素中现有的位置和侧面。通常,您可以创建一个面板或任何其他UI元素,并将其用作参考矩形转换。通过设置ReferenceRectTransform为参考rect变换,UniWebView将调整自身大小并调整其大小以匹配rect的位置和大小。因此,您可以跳过计算Frame并适应具有不同尺寸和分辨率的设备。

    有了后RectTransform,您可以设置属性:

    RectTransform myUITransform = ...

    webView.ReferenceRectTransform = myUITransform;

    以下是lua代码参考如下:

    local _webView = self.m_objUniWebViewObject:GetComponent(typeof("UniWebView"));

            if _webView == nil then

                _webView = self.m_objUniWebViewObject:AddComponent(typeof("UniWebView"));

                _webView.Frame = UnityEngine.Rect.New(self.left,self.top,self.m_webPlay_notice.width/self.adjustSize,self.m_webPlay_notice.height/self.adjustSize);

                _webView:Load(self.url)       

            else

                _webView:CleanCache();

                _webView:CleanCookie();

                _webView:Load(self.url)

            end

            _webView:Show()

    其中self.left,self.top是项目中适配计算的距离左边的宽度,以及距离上边底线的宽度,elf.m_webPlay_notice是界面中的一个空白透明的sprite,作为页面显示的父物体,以此为参照物,此项目中使用的是ngui,如果是ugui,则不用这么麻烦,直接可以使用ReferenceRectTransform 来设置

    相关文章

      网友评论

        本文标题:unity3d游戏内嵌网页插件-uniwebview3

        本文链接:https://www.haomeiwen.com/subject/oxpptktx.html