uniwebview_uniwebview 用法 - CSDN
精华内容
参与话题
  • 下载 UniWebView这个插件支持Android、IOS和Mac,不支持Windows。 百度网盘下载链接: https://pan.baidu.com/s/1wM7frlsW4qdiUA0WHu7exA 提取码:sel8 Unity Asset Store下载链接: ...

    下载

    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,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" />
    

    其他

    背景透明: 在 iOS 中,默认情况下web 视图还有一个灰色的背景 。你可以使用 SetTransparentBackground来设置为 背景透明

    加载进度框: 就是表示加载进度,以改善体验。您可以禁用 和 显示,接口SetShowSpinnerWhenLoading;也可以自定义标签文本,接口SetSpinnerLabelText

    Back 按键 和导航工具栏按钮支持: 用户可以使用后退按钮在 web 页面之间导航,Android 设备上像在本机浏览器中一样。iOS 是一个带有导航按钮的默认工具栏

    向前 和 向后: 浏览器的两个行为,您可以在你的游戏中控制网页导航,通过 GoBackGoForward方法

    清理缓存: web 视图将保持 url 请求,默认情况下,这可能会使旧的页面显示,即使您更新您的 web 页。使用 CleanCache来解决这一问题

    视频播放: 在web 视图 播放视频,只需加载url

    加载本地文件 和 html 字符串: 给定设置 本地文件的 url,或 调用 LoadHTMLString具有 html字符串的值,您可以加载本地的内容

    不止一个 web 视图: 如果您希望在你的游戏中显示 多个 web 视图,那就是 有多个 挂有UniWebView组件的GameObject 而已

    展开全文
  • ## **UniWebView3和Screen.SetResolution** 最近在做游戏内部访问网页的功能逻辑,使用了UniWebView3插件,结果遇到了一个比较坑的问题,在此记录一下,以备查阅。 我首先使用UniwebView做了一个demo,导出到...
    ## **UniWebView3和Screen.SetResolution**
    

    最近在做游戏内部访问网页的功能逻辑,使用了UniWebView3插件,结果遇到了一个比较坑的问题,在此记录一下,以备查阅。

    我首先使用UniwebView做了一个demo,导出到android和ios,能够正常的自适应尺寸,设置fullScreen,ReferenceRectTransform 都是没有问题的。
    然后我将插件导入我们的游戏项目,并设置好参数。导出android包运行结果是位置和尺寸全都不对。
    why? ,查了网上的很多资料和例子,没有人遇到我的问题(demo正常,导入游戏项目就gameOver),想想指定是我们的项目里面有什么屏幕设置造成了,后来就搜到了Screen.SetResolution。
    下面展示一些 代码。

    public void SetScreenResolution()
        {
    #if UNITY_ANDROID || UNITY_IOS
            if (_scaleWidth == 0 && _scaleHeight == 0)
            {
                int width = Screen.currentResolution.width;
                int height = Screen.currentResolution.height;
                int designWidth = 1280;
                int designHeight = 720;
    
                float s1 = (float)designWidth / (float)designHeight;
                float s2 = (float)width / (float)height;
                if (s1 < s2)
                {
                    designWidth = (int)Mathf.FloorToInt(designHeight * s2);
                }
                else if (s1 > s2)
                {
                    designHeight = (int)Mathf.FloorToInt(designWidth / s2);
                }
                float contentScale = (float)designWidth / (float)width;
                if (contentScale < 1.0f)
                {
                    _scaleWidth = designWidth;
                    _scaleHeight = designHeight;
                }
            }
            if (_scaleWidth > 0 && _scaleHeight > 0)
            {
                if (_scaleWidth % 2 != 0)
                {
                    _scaleWidth -= 1;
                }
                Screen.SetResolution(_scaleWidth, _scaleHeight, true);
                Debug.Log("游戏分辨率为:" + _scaleWidth + " x " + _scaleHeight + "  当前分辨率为:" + Screen.width + " x " + Screen.height);
            }
    #endif
        }
    

    这段代码是在游戏运行时设置屏幕分辨率,目的是为了提高运行效率,当然对android游戏提升性能比较明显,对ios没啥用。
    好吧,问题出现了,以我多年的暴力经验就是,把这段代码干掉,反正我们游戏发布ios,没什么影响。but,我们负责人说了,那是不行的,我们后期还是要发android版本的。作为一个苦逼的打工仔,只能遵命。
    我的想法是既然当前游戏分辨率是根据原始分辨率计算的,那就反推回去。
    不多说直接上代码:

       private UniWebView uniWebView;
       //需要引用到的 rect,作为网页的view
        public RectTransform viewImage;
        private string url = "https://www.baidu.com/";
    	//UI层摄像机,如果Canvas.RenderMode == ScreenSpace-Camera
        public Camera camera;
        //被设置的游戏分辨率width
        private int _scaleWidth;
        //被设置的游戏分辨率height
        private int _scaleHeight;
        //初始屏幕分辨率(屏幕正常分辨率)
        public static Vector2 initScreen = Vector2.zero;
    
    ///
       uniWebView = GameObject.FindObjectOfType<UniWebView>();
       if (uniWebView == null)
       {
           GameObject webViewGameObject = GameObject.Find("UniWebView");
           if (webViewGameObject == null)
               webViewGameObject = new GameObject("UniWebView");
           uniWebView = webViewGameObject.AddComponent<UniWebView>();
           //这个是例子中正确的使用方法,如果你的屏幕分辨率没有被设置。
           //uniWebView.ReferenceRectTransform = viewImage 
           
           Rect rect = viewImage.rect;
           
           var screenPos = camera.WorldToScreenPoint(viewImage.transform.position);
           Debug.Log("screenPos===>" + screenPos);
           float width = rect.width / 1342 * initScreen.x;
           float height = rect.height / 640 * initScreen.y;
           float x = screenPos.x/ _scaleWidth * initScreen.x;
           float y = screenPos.y/ _scaleHeight * initScreen.y;
           Debug.Log("x===>" + x  + " y====>" + y + " width===>"+ width+ " height===>"+ height);
    
           uniWebView.Frame = new Rect(x- width/2, y- height/2, width, height);
       }
    
    

    代码中1342*640 ,这个是我们游戏设置的标准分辨率。所有的UI都以这个分辨率自适应。
    在这里插入图片描述
    好了,导出包测试结果。
    在这里插入图片描述
    哈哈,跟我设置的viewImage一样的位置和大小,赶快来试试吧。

    展开全文
  • Uniwebview的最新官方版本,iOS平台用WKWebView代替UIWebView,解决之前的老版本苹果打包上传App Store时会因为使用UIWebView会被拒审的问题
  • unity 插件uniwebview 内嵌H5游戏

    千次阅读 2019-06-04 19:56:37
    首先需要用到插件 uniWebView3 unity 商店网址 https://assetstore.unity.com/packages/tools/network/uniwebview-3-92605 导入插件之后在文件夹中找到预制体拖入场景中 基本配置 1、Url On Start 在...

    首先需要用到插件 uniWebView3   

    unity 商店网址

    https://assetstore.unity.com/packages/tools/network/uniwebview-3-92605

    导入插件之后在文件夹中找到预制体拖入场景中

    基本配置

     

    1、Url On Start

    在UniWebView的Start() 方法里会加载url

    2、Show On Start

    勾选的话会在Start()方法里主动显示。

    未勾选的话需要主动调用Show()方法

    3、Full Screan

    全屏展示,勾选上的话会忽略Frame 和 Reference Rect Transform的设置

    4、使用固定大小展示的话 设置 Frame的值,并且取消勾选Full Scream,以及

    Reference Rect Transform 设置为None

    5、Reference Rect Transform

    引用一个Rect Transform并更改web view的大小以遵循该转换。如果您正在使用具有多个分辨率支持的Unity UI,它是非常有用的。

    6、Use Toolbar

    勾选后只在ios已经mac上有用。包括关闭,前进,返回等。可以设置Toolbar Position 为Top,则在顶端显示,Bottom 则在底端显示。android的导航栏就有这些功能,所以不需要这个。

    7、一旦UniWebView被Done按钮或Back按钮关闭,它将在默认情况下销毁组件本身,以便尽快释放资源。您将无法重用相同的UniWebView。如果想要显示另一个页面,则需要创建一个新的UniWebView。

     

    监听事件

    1、OnPageFinished 当url加载完毕后调用

    也可以使用方法作为委托侦听器(delegate Listener)

    2、OnShouldClose

    OnShouldClose是在web视图即将关闭时发送给您的事件。用户可以使用iOS上的“完成”按钮或Android上的“后退”按钮。一旦web view关闭,UniWebView组件也将被销毁,以保持干净。如果您在引用中保存web视图(例如,我们在这里通过webView字段保存web视图),那么很有可能将其设置为null。否则,如果你想要加入的话,你以后可能会遇到麻烦。

    tips:

    在Android上,“后退”按钮将引导用户返回到上一个页面。如果没有返回的页面,它将发送OnShouldClose事件,如果返回true,则尝试关闭web view。

    3、EvaluateJavaScript  调用 JavaScript 方法

    第一个参数:JavaScript 的方法

    第二个参数:第二个参数是带有UniWebViewNativeResultPayload的操作。payLoad也用于其他web view的方法回调,其中包含来自本机端的基本信息。这里我们只需要检查下状态码,“0”表示一切正常。

    4、OnMessageReceived

    html里需要有

     

    UniWebView In Depth

    1、窗口坐标设置

    示例:

    2、OnOrientationChanged (Event)

    当屏幕转向的时候,Frame会相应变化。

    3、OnRectTransformDimensionsChange 

    使用ReferenceRectTransform 属性时,当屏幕转向时不需要再手动添加OnOrientationChanged 事件。UniWebView已经做好了这块。

    除了上述情况,当你因为其它原因需要这个功能的时候,可以调用这个方法。

     

    Transition

    1、显示/隐藏过渡

    通过修改Show 和 Hide的参数

    fade 淡入淡出效果

    edge 出现/消失的方向 eg:UniWebViewTransitionEdge.Bottom 从底部出现

    duration 持续时间

    completionHandler:完成后回调

    tip:这两个方法有个bool返回值,每次只允许进行一个转换,如果您试图在上一个转换打开时初始化另一个转换,那么新的转换将不会启动,返回值将为false。

    2、Web View Animation

    UniWebView还支持在显示web视图时对其进行动画处理。使用AnimateTo方法,就可以指定一个帧作为目标帧。通过使用此方法,您还可以设置动画的持续时间和延迟,以便进行精细的控制。

     

    Memory Management(内存管理)

    1、在不需要时销毁web视图

    2、如果web视图的holder组件(本例中为MyMonoBehaviour组件)有可能被破坏,您可能还需要在MyMonoBehaviour中添加OnDestroy,并关闭web视图以防止泄漏:

    3、将一个监听器添加到OnShouldClose事件中,在关闭用户操作的web view时,Android和iOS将调用该事件。

    tip:如果return false , 视图不会被关闭。OnShouldClose让我们有机会重写关闭方法。

    4、在不使用时清理缓存

    当用户浏览Internet时,它将创建一些缓存,包括缓存的图像和响应,或者web页面将一些内容存储在本地存储中。虽然在大多数情况下它不会占用内存,但是如果您没有在这种情况下使用缓存,您可以调用CleanCache清除它们。

     

    Messaging System

    1、UniWebView通常情况下检查所有从"uniwebview://"启动的链接。OnMessageReceived事件将会收到UniwebViewMessage object

    UniWebView消息传递系统还可以帮助您解析输入

    2、添加你自己的scheme

    3、也可以设置"http"和"https"作为一个scheme,它将阻止所有web资源的加载并将它们发送给您。这给了一个检查所有交通的机会。

    eg:它的一个用例是您不希望您的用户离开当前页面。因此,您可以首先加载您的页面,然后在OnPageFinished事件中,通过向UniWebView消息系统添加“http(s)”方案来禁用所有导航:

    4、消息系统构建在URL和Unity的消息发送器上。这意味着您不能同时发送无限大小的数据。URL的最大允许长度与设备和系统版本不同。但是一个URL的安全长度是~16KB。如果你有什么大的东西从网页发送到Unity并且遇到一些问题,最好把它们分成小块。

     

    Using JavaScript

    1、JavaScript是一个强大的工具,可以交互,甚至可以更改Unity游戏中的web内容。UniWebView完全支持在web页面中运行JavaScript。您不仅可以在页面上运行现有的JavaScript代码,还可以使用JavaScript定义自己的函数并将其添加到web视图中

    2、Add

    2、Evaluate

    当我在h5中进行了uniwebview    (scheme访问请求 )   插件会自动拦截下来然后获取其中的参数  例如下图中的  scheme的值是uniwebview     Path的值为actionArgs参数     Args["Key"]的值为value    

     Args["anotherKey"]的值为我们可以根据获取到的参数在unity端进行不同的操作  

    现在我想要实现微信登录内嵌H5游戏  首先我需要将SDK接好 然后通过授权拿到相应openid和uid  

    首先需要一个按钮  点击按钮会发送一个url请求(可以在index中写一个url请求的方法   然后在ts脚本中调用方法) 

    例如 uniwebview://game-over?score=11&life=222  这个url请求    当发送url请求时  unity端的uniwebview会进行默认监听uniwebview为前缀的url请求  然后在OnMessageReceived事件中能够获取到url中携带的参数   根据参数我们就可以进行不同的操作,例如微信登录。

    还需要在egret中的index.html中写一个方法例如receive(uid,openid) 当我部署到服务器上后   我在unity端就可以通过加载这个H5的网址  然后在unity里面通过前面提到的EvaluateJavaScript方法    将receive(uid,openid) ;以字符串的方式传进去(如果是要进行微信登录  那就需要写一个传入 openid和uid的方法    在方法中获取到openid和uid后调用ts脚本中的向后端发送数据的方法向后端获取账号密码   拿到账号密码后直接进行登录) 

       

    如果不想使用任何JavaScript,可以通过uniwebview . setjavastenabled (false)禁用它。在此设置之后创建的所有web视图都不支持JavaScript,在浏览非JavaScript内容时,它将提供更快的速度。

     

    注:如有错误和不明白之处请及时提出 

    查看原文请点击https://blog.csdn.net/qiaobinXU/article/details/81389468

    展开全文
  • UniWebView Unity浏览器插件下载,V3.10.1版本。 UniWebView包含一组C#中的抽象高级API,它包含了iOS和Android平台的原生API。使用UniWebView,您可以在游戏中使用浏览器等行为,而无需了解本机开发。当您需要显示...
  • 欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 给个比较新的版本3.8的链接,据说是优化了很多用起来很方便,本人没有进行研究大家有兴趣的可以参考一下 ... ...一直有人咨询锁屏失去焦点的问题 整理了一下...

    欢迎加入Unity业内qq交流群:956187480

    qq扫描二维码加群


    给个比较新的版本3.8的链接,据说是优化了很多用起来很方便,本人没有进行研究大家有兴趣的可以参考一下

    https://download.csdn.net/download/qq_37310110/11004869


     

     一直有人咨询锁屏失去焦点的问题 整理了一下(安卓端)

    在安卓平台使用最大的问题是Unity失去焦点的问题。经过使用OnApplicationFocus方法测试,调用平台WebView打开界面时默认打开另一个Activity,Unity本身为一个Activity,当打开另外一个Activity时Unity会失去焦点,此时焦点不在Unity程序身上,如果锁屏或者按Home键再打开后只会调出最后一个显示的Activity,也就是UniWebView打开的网页,而不是Unity程序。也就是在打开网页的界面按下Home键或者锁屏后程序将无法正常返回。主要的问题在于Unity程序和打开的网页属于不同的Activity,解决的方法为更改Unity工程中的安卓配置文件,使一个Activity继承于另一个,显示在同一个Activity上。


    参考博客地址: https://blog.csdn.net/qq_37310110/article/details/80469144

       插件下载连接  : https://download.csdn.net/download/qq_37310110/10318627

    在官方提供的sdk里 最新的3.0版本跟之前的旧版本2.8差距其实还是很大的,但是功能上只加不减,且调用起来更加方便。2.8版本的sdk插件里面有一个完整的demo包括各种调用,但是3.0版本的就没有相关的demo所以我们只能参考2.8的demo,我这里把官方的版本迁移说明文档地址 给大家  http://docs.uniwebview.com/guide/migration-guide.html  一点要看研究一下。本篇基于3.0版本。

     前面简单记录了一下unity打开原生浏览器访问网址的方法,今天咱们可以稍微深入一下一起探讨unity前端应用如何跟访问的web后端进行数据上的交互。有兴趣的可以研究一下UniWebView的api   http://docs.uniwebview.com/api/。在aoi上很多东西都写的很清楚。

           今天我这里主要记录unity前端如何跟web后端数据传输。参考文档

          web服务器传过来的消息模式是要遵循一定的模式的,即unity接收到的额message里面需要包含三个属性Scheme,path,Args。主要可以通过path属性区分消息类型。

    然后我们如果想要给web服务器传输数据就可以调用他们的js脚本把参数传过去然后运行方法,websever就弄了个获取到你传过去的 数据。

       

    还有一个功能就是unity前段可以自己自定义js脚本方法添加到web端,然后再传入参数自己调用,web后端也是可以得到你说传输的数据的。

    而这些操作结束后都会有一个回调函数,里面的参数就可以用来验证执行 的结果是否成功。

    上一篇博客我只是抱着打开网页的态度去看的,所以有很多细节就没有记录下来,包括ios 安卓双平台的差异化以及界面布局等一些自带属性的调整,如果大家这方面有需求的话就去参考文档吧,写的很清楚了已经。

    最后我把我这这个完整代码贴出来 不应定大家都适用的我这是经过服务器老大哥的指点后精简的

    #region 模块信息
    // **********************************************************************
    // Copyright (C) 2018 Blazors
    // Please contact me if you have any questions
    // File Name:             TheInterface
    // Author:                romantic123fly
    // WeChat||QQ:            at853394528 || 853394528 
    // **********************************************************************
    #endregion
    using com.blazors.xfd.msg.req;
    using System;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class WebSceneManager : BaseManager<WebSceneManager> {
        public Text result;
    
    #if UNITY_IOS || UNITY_ANDROID || UNITY_WP8
        public void LoadWeb(string url) {
            var _webView = CreateWebView();
            _webView.Frame = new Rect(0, 0, Screen.width, Screen.height/2);
            _webView.Load(url);
            _webView.Show();
    
            _webView.OnPageFinished += _webView_OnPageFinished;
            _webView.OnMessageReceived += _webView_OnMessageReceived;
            _webView.OnPageErrorReceived += _view_OnPageErrorReceived; ;
            _webView.OnShouldClose += _view_OnShouldClose;
        }
        //网页加载出错
        private void _view_OnPageErrorReceived(UniWebView webView, int errorCode, string errorMessage)
        {
            GameTool.MakeToast("网页加载出错:" + errorMessage);
        }
       
        //接收到网页事件消息
        private void _webView_OnMessageReceived(UniWebView webView, UniWebViewMessage message)
        {
            GameTool.MakeToast("接收到信息:" + message.Path);
    
            switch (message.Path)
            {
                case "close":
                    Destroy(webView.gameObject);
                    webView.CleanCache();
                    break;
                case "applist"://app列表
                    var applistdata = "{'qq':'qq1','wechat':'微信','weibo':'微博'}";
                    RunScript(webView, "jxfd.applistcallback" + "(" + applistdata + ")");
    
                
                    break;
                case "phones"://通信录
                    var phonesdata = "{'小明':0,'小花':'2','小了':'5'}";
                    //RunScript(webView, "jxfd.phonescallback" + "(" + phonesdata + ")" );
    
                    var r = new CMD_CR_UploadPhones();
                    r.userId = PlayerManager.GetInstance.UserID;
                    r.phonesJson = phonesdata;
    
                    NetworkManager.GetInstance.SendMessage(r,Protocol.S_LOBBY.MDM_H5,Protocol.S_LOBBY.CMD_H5.SUB_C_UP_PHONES);
                    break;
                case "callrecord"://通话记录
                    var callrecorddata = "{'A':2,'B':'3','C':'6'}";
                    RunScript(webView, "jxfd.callrecordcallback" + "(" + callrecorddata + ")" );
                    break;
                case "cgps"://gps信息
                    var cgpsdata = "{'东经':'168.26.24','北纬':'56.23.1'}";
                    RunScript(webView, "jxfd.cgpscallback" + "(" + cgpsdata + ")" );
                    break;
                default:
                    break;
            }
        }
    
        /// <summary>
        /// 向web界面添加js方法
        /// </summary>
        /// <param name="webView">当前web</param>
        /// <param name="js">js方法名</param>
        /// <param name="type">传输的特定类型</param>
        /// <param name="data">web传输的json数据</param>
        public void AddScript(UniWebView webView,string js,string type,string data) {
            if (webView == null) {
                result.text = "Please open the web view first.";
                return;
            }
            webView.AddJavaScript(js, (payload) => {
                if (payload.resultCode.Equals("0"))
                {
                    GameTool.MakeToast("添加成功");
                    RunScript(webView, type+"("+data+","+js+");");
                }
                else
                {
                    GameTool.MakeToast(payload.resultCode);
                }
            });
        }
        //运行web界面js函数
        /// <summary>
        /// 运行web界面js函数
        /// </summary>
        /// <param name="webView">当前web界面</param>
        /// <param name="parameter">运行js的相关参数</param>
        public void RunScript(UniWebView webView,string parameter) {
            GameTool.MakeToast("运行参数:" + parameter);
    
            webView.EvaluateJavaScript(parameter, (payload) => {
                if (payload.resultCode.Equals("0"))
                {
                    GameTool.MakeToast("运行js函数成功: " + payload);
                }
                else
                {
                  GameTool.MakeToast("运行js函数失败:"+payload.resultCode);
                }
            });
        }
      
        //网页加载成功
        private void _webView_OnPageFinished(UniWebView webView, int statusCode, string url)
        {
            //AddScript(webView);
            GameTool.MakeToast("网页加载成功");
        }
    
        //退出关闭网页
        private bool _view_OnShouldClose(UniWebView webView)
        {
            webView.Hide();
            webView.OnMessageReceived -= _webView_OnMessageReceived;
            webView.OnShouldClose -= _view_OnShouldClose;
            webView.OnPageErrorReceived -= _view_OnPageErrorReceived; ;
            webView.OnPageFinished -= _webView_OnPageFinished;
            webView.OnMessageReceived -= _webView_OnMessageReceived;
            webView.CleanCache();
            Destroy(webView.gameObject);
            GameTool.MakeToast("网页关闭");
    
            return true;
        }
        UniWebView CreateWebView() {
            var webViewGameObject = new GameObject("UniWebView");
            var webView = webViewGameObject.AddComponent<UniWebView>();
            return webView;
        }
    #else
        void Start() {
            Debug.LogWarning("UniWebView only works on iOS/Android/WP8. Please switch to these platforms in Build Settings.");
        }
    #endif
    }
    

    插件下载连接  : https://download.csdn.net/download/qq_37310110/10318627

    
     

      参考博客地址: https://blog.csdn.net/qq_37310110/article/details/80469144


     

    欢迎加入Unity业内qq交流群:956187480

    qq扫描二维码加群

     

    展开全文
  • UniWebView 3.unitypackage最新版(Unity商店下载) 更新于2019年8月30日,打开解压导入Unity即可使用
  • Unity内嵌网页插件UniWebView使用小坑

    千次阅读 2018-07-08 15:06:57
    环境:UniWebView 2.12,Unity 2017.3.1f11. 导入插件2. 必须切换平台到Android或iOS,否则有编译错误3. url必须加协议前缀 http://、https://之类,否则网页打开一片空白4. 显示区域不受限于父子关系,由...
  • 内嵌网页 UniWebView 3 的使用

    万次阅读 热门讨论 2018-10-11 17:50:17
    ...   基本配置 1、Url On Start ...在UniWebView的Start() 方法里会加载url 2、Show On Start 勾选的话会在Start()方法里主动显示。 未勾选的话需要主动调用Show()方法 3、Full Screan 全屏展示,...
  • UniWebView 3 使用心得

    千次阅读 2018-11-13 16:41:34
    基于 UniWebView 3 官网教程 点击打开链接 最新版 插件下载链接 using System.Collections; using System.Collections.Generic; using UnityEngine; public class WebViewController : MonoBehaviour { ...
  • UniWebView使用总结

    千次阅读 2018-05-24 17:39:40
    对于Unity中显示网页方法,先引用下别人的总结目前有三种方式可以实现在Unity工程中实现内嵌网页的功能:1、 UnityWebCore:只支持Windows平台,调用浏览器内核,将...3、 UniWebView:适用于Andriod、ios和Mac...
  • 一、目前有三种方式可以实现在Unity工程中实现内嵌网页的功能: 1、  UnityWebCore:只支持Windows平台,调用浏览器内核,将网页渲染到mesh,作为...UniWebView:适用于Andriod、ios和Mac os,在移动端效果
  • 最近做项目的时候使用到了内嵌浏览器,使用到了UniWebView插件。在Windows平台的时候是无法看到效果的需要打包出来才可以看到的哦 插件下载链接:点击进入下载链接 使用的时候遇到了很多坑,最后还是做好了,写篇...
  • unity 网页 基于 UniWebView 做UGUI 适配

    千次阅读 2018-02-07 19:49:00
    // 在UniWebViewHelper添加此函数; public static int ConvertPixelToPoint(float pixel, bool width) { #if UNITY_IOS && !UNITY_EDITOR float scale = 0; if (width) { scale =
  • UniWebView插件的使用

    千次阅读 2019-01-25 15:53:40
    uniwebview插件可以在unity内部打开网页,不过这个插件只能在安卓和IOS上运行,unity的editor下是运行不起来的,下面说下用法:private UniWebView webView; public GameObject go; void OpenURL(string url) { ...
  • 转载开发者俱乐部并且修改了 https://docs.uniwebview.com/api/ 插件文档,可使用百度翻译查看   using System.Collections; using System.Collections.Generic; using UnityEngine...
  • Unity插件使用--UniWebView2

    千次阅读 2017-06-01 16:21:33
    Unity插件使用–UniWebView2 v2.8.0 1、 UnityWebCore:只支持Windows平台,调用浏览器内核,将网页渲染到mesh,作为gameObject。 2、 Unity-Webview:只适用于Andriod和ios平台,调用移动平台的Webview。 3、 ...
  • 于是转向了uniwebview,官方介绍是可以透明,最终能成功。 首先下载插件,asset store就有。下载后点import,即可导入project。 将project中UniWebView/Prefab/UniWebViewObject拖入Hierarchy中,可以看到Inspec
  • 一.Unity加载网页实现方式 UnityWebCore:只支持Windows平台,调用浏览器内核,将网页渲染到mesh,作为gameObject。 Unity-Webview:只适用于Andriod和ios平台,调用...UniWebView插件 : 适用于Andriod、ios和M...
  • Unity中内嵌网页插件 UniWebView 2.8使用

    万次阅读 热门讨论 2016-11-14 20:48:02
    UniWebView2:适用于Andriod、ios和Mac os,在移动端效果最好。支持WP8,不支持windows桌面系统,包括编辑器状态。 Unity4.x版本是 UniWebViewUnity AssetStore 上的插件:
1 2 3 4 5 ... 16
收藏数 301
精华内容 120
关键字:

uniwebview