Unity 工具之 UniWebView 内嵌网页/浏览器到应用中,并且根据UGUI大小放置(简单适配UGUI)

这篇具有很好参考价值的文章主要介绍了Unity 工具之 UniWebView 内嵌网页/浏览器到应用中,并且根据UGUI大小放置(简单适配UGUI)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Unity 工具之 UniWebView 内嵌网页/浏览器到应用中,并且根据UGUI大小放置(简单适配UGUI)

一、简单介绍

二、UniWebView 组件上的几个参数属性选项介绍

三、一些关键接口介绍

四、Transition

五、Memory Management(内存管理)

六、Messaging System

七、注意实现

八、效果预览

九、实现 通过UGUI控制 WebView 大小的使用的具体步骤

十、关键代码

十一、参考工程


一、简单介绍

Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。

本节介绍,使用 UniWebView 内嵌网页/浏览器到应用中,并通过 UGUI 控制 Web View 大小显示的方法。方法不唯一,这里仅供参考。

UniWebView 包含一组 C# 的高层级 API,它对 iOS 和 Android 平台的本机 API 进行了抽象封装。使用 UniWebView,您可以在无需了解本机开发的任何内容的情况下,就将浏览器行为添加到游戏中。当您需要显示活动公告及通知,或为玩家排名添加排行板,或是向用户显示任何网页内容时,UniWebView 都可以帮助您轻松解决问题。

UniWebView 支持 在iOS 9.0 或更高版本,以及 Android 5.0 (API Level 21) 或更高版本。它还包含在 macOS 上的 Unity Editor 的完整功能支持。

功能:

  • 网络浏览

  • 载入本地 HTML 文件

  • JavaScript 完整支持

  • 基于 url scheme 的消息系统

  • 通过绝对值或引用 Unity UI 元素的相对值来设置位置和大小

  • 播放 YouTube,Vimeo 或本地视频

  • 获取照片和上传

注意:UniWebView 使用版本为 UniWebView 3.7.0

二、UniWebView 组件上的几个参数属性选项介绍

unity webview,C#,unity3d,unity,游戏引擎

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。

unity webview,C#,unity3d,unity,游戏引擎

三、一些关键接口介绍

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

unity webview,C#,unity3d,unity,游戏引擎

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

参考: https://msdn.microsoft.com/en-us/library/018hxwa8.aspx

2、OnShouldClose

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

unity webview,C#,unity3d,unity,游戏引擎

tips:

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

3、EvaluateJavaScript 调用 JavaScript 方法

unity webview,C#,unity3d,unity,游戏引擎

第一个参数:JavaScript 的方法

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

4、OnMessageReceived

unity webview,C#,unity3d,unity,游戏引擎

html里需要有

unity webview,C#,unity3d,unity,游戏引擎

四、Transition

1、显示/隐藏过渡

unity webview,C#,unity3d,unity,游戏引擎

通过修改Show 和 Hide的参数

fade 淡入淡出效果

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

duration 持续时间

completionHandler:完成后回调

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

2、Web View Animation

unity webview,C#,unity3d,unity,游戏引擎

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

五、Memory Management(内存管理)

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

unity webview,C#,unity3d,unity,游戏引擎

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

unity webview,C#,unity3d,unity,游戏引擎

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

unity webview,C#,unity3d,unity,游戏引擎

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

4、在使用webView的MyMonoBehaviour网站的其他部分,你可以在使用webView之前检查它是否为null:

unity webview,C#,unity3d,unity,游戏引擎

5、在不使用时清理缓存

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

unity webview,C#,unity3d,unity,游戏引擎

六、Messaging System

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

unity webview,C#,unity3d,unity,游戏引擎

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

unity webview,C#,unity3d,unity,游戏引擎

2、添加你自己的scheme

unity webview,C#,unity3d,unity,游戏引擎

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

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

unity webview,C#,unity3d,unity,游戏引擎

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

更多接口信息可到官网,或者查看插件的接口说明,这里不再赘述

七、注意实现

1、由于UniWebView 是贴屏显示的,所以在UGUI中的的UI组件在Web显示后会被覆盖掉

2、由于UniWebView 是贴屏幕显示,所以在AR/VR 3D世界中使用不是很有好

3、UniWebView 不支持 PC端,所以请打包到 Android 或者 IOS 设备上运行

八、效果预览

unity webview,C#,unity3d,unity,游戏引擎

九、实现 通过UGUI控制 WebView 大小的使用的具体步骤

1、打开Unity,导入 UniWebView 插件

unity webview,C#,unity3d,unity,游戏引擎

2、在场景中搭建 UI

unity webview,C#,unity3d,unity,游戏引擎

3、新建脚本,编写脚本,并添加到 UI 控件上,对应赋值脚本

unity webview,C#,unity3d,unity,游戏引擎

4、添加 UniWebView 脚本给 Web_Image,把Web_Image 赋值 UniWebView 的 Reference Rect Transform,这样 Web_Image ,并且取消 Full Screen ,这样就可以控制 Web View 大小随 Web_Image 了

unity webview,C#,unity3d,unity,游戏引擎

5、打包,到设备上运行,效果如下

unity webview,C#,unity3d,unity,游戏引擎

十、关键代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class WebViewUI : MonoBehaviour {


    public UniWebView uniWebView;
    public Text state;
    public Button openUrlBtn;

    // Use this for initialization
    void Start()
    {
        uniWebView.OnPageFinished += (UniWebView webView, int statusCode, string url) => {
            uniWebView.Show();
            state.text = "";
        };

        uniWebView.OnPageStarted += (UniWebView webView, string url)=>{
            uniWebView.Hide();
            state.text = "Loading...";
        };

        uniWebView.OnPageErrorReceived += (UniWebView webView, int errorCode, string errorMessage)=>{
            state.text = "Error:" + errorCode;
        };

        openUrlBtn.onClick.AddListener(()=> {
            Load("http://www.baidu.com");
        });

       
    }

    public void Load(string url)
    {
        gameObject.SetActive(true);
        uniWebView.CleanCache();
        uniWebView.Load(url);
    }

    public void Close(){
        gameObject.SetActive(false);
    }
}文章来源地址https://www.toymoban.com/news/detail-821378.html

十一、参考工程

到了这里,关于Unity 工具之 UniWebView 内嵌网页/浏览器到应用中,并且根据UGUI大小放置(简单适配UGUI)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity打包浏览器端网页HTML(WebGL)以及部署到Tomcat浏览器访问报错问题解决

    Unity 默认打包是 PC 端客户端程序,想要打包浏览器可以访问的 WebGL 网页,需要修改一些配置。 我使用的 Unity 版本是 2021.3.24f1 。 1.1 点击 File —— Build Settings... 1.2 点击 Add Open Scenes .把全部场景加入 Scene In Build 列表中 网上说不全部加进去会找不到需要跳转的场景,我还没涉

    2024年02月16日
    浏览(37)
  • 运用谷歌浏览器的开发者工具,模拟搜索引擎蜘蛛抓取网页

    第一步:按压键盘上的F12键打开开发这工具,并点击右上角三个小黑点 第二步:选择More tools 第三步:选择Network conditions 第四步:找到User agent一列,取消复选框的勾选 第五步:选择谷歌爬虫agent即Googlebot 第六步:在当前浏览器地址栏中,输入想要访问的网站地址,直接访问

    2024年02月03日
    浏览(40)
  • 如何在VSCode内嵌浏览器实时预览Vue项目

    安装以下两个插件:just heml preview 和 Browser Preview just heml preview:使用ctrl + shift + p 打开命令 然后输入:just preview 即可打开 输入本地项目地址:localhost:4000 最后可按照vscode正常分屏方式分屏(右上角有pc端和移动端) Browser Preview:现已不再维护 安装成功后左边会出现一个类似

    2024年01月22日
    浏览(53)
  • java内嵌浏览器CEF-JAVA、jcef、java chrome

    java内嵌浏览器CEF-JAVA、jcef、java chrome jcef是老牌cef的chrome内嵌方案,可以进行java-chrome-h5-桌面开发,下面为最新版本(2023年9月22日10:33:07) JCEF(Java Chromium Embedded Framework)是一个基于Google Chromium的Java库,可以在Java应用程序中嵌入和使用Chromium浏览器引擎。 转自 https://lingkan

    2024年02月05日
    浏览(32)
  • Postman模拟浏览器网页请求并获取网页数据

      本文介绍在浏览器中,获取网页中的某一个请求信息,并将其导入到 Postman 软件,并进行 API 请求测试的方法。    Postman 是一款流行的 API 开发和测试工具,它提供了一个用户友好的界面,用于创建、测试、调试和文档化 API 。本文就介绍一下这一工具的最基本用法——

    2024年04月08日
    浏览(38)
  • vue 监听浏览器网页关闭和网页刷新事件

    1、监听浏览器页面关闭/刷新事件。 运用场景:浏览器页面关闭后删除local storage、session、cookie、发送请求等。 2、只监听浏览器关闭事件

    2024年02月13日
    浏览(40)
  • Selenium入门必备:学会用代码控制浏览器,打开网页、找到元素和退出浏览器

    目录 一、前期准备 1、概述 2、学习目标 3、安装 二、selenium的基本使用 1、加载网页: 2、定位和操作: 3、查看请求信息: 4、退出 小结 三、元素定位的方法 学习目标 1、selenium的定位操作 2、元素的操作 小结 四、selenium的其他操作 学习目标 1、无头浏览器 1、selenium 处理

    2024年02月13日
    浏览(89)
  • 浏览器打开一个网页的全流程

    互联网日常生活中最为常见的行为便是在浏览器输入一个网址, 然后浏览网页内容, 这样一个简单的行为背后有哪些技术细节呢, 本文将做一些介绍. 全流程可拆分为4个主要步骤 将域名解析为IP地址 与目标主机建立TCP连接 (三次握手) 发送与接受数据 与目标主机断开TCP连接 (四

    2024年02月08日
    浏览(42)
  • 【移动端网页布局】移动端网页布局基础概念 ④ ( 物理像素 | 物理像素比 | 代码示例 - 100 像素在 PC浏览器 / 移动端浏览器 显示效果 )

    移动端 网页开发 与 PC 端开发有很多不同之处 , 在图片处理方向需要采用 二倍图 / 三倍图 / 多倍图 方式进行图片处理 ; 图片处理的方式与如下的 物理像素 与 物理像素比 概念相关 ; 物理像素 : 物理像素就是 设备 上的分辨率 , 如 1920 x 1080 像素 , 就是宽度上有 1920 个像素 , 高

    2023年04月23日
    浏览(41)
  • python通过selenium爬取网页信息,python获取浏览器请求内容,控制已经打开的浏览器

    背景:通过python中直接get或者urlopen打开一些有延迟加载数据的网页,会抓取不到部分信息。 1. 命令行打开chrome,并开启调试端口 (前提,找到chrome安装目录,找到chrome.exe所在路径,添加到环境变量中,例如我的是C:Program FilesGoogleChromeApplication) remote-debugging-port指定远程调试

    2024年02月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包