Unity WebView 插件⭐️(六)核心模块 网络视图预制件—WebViewPrefab

举报
呆呆敲代码的小Y 发表于 2021/09/27 09:53:01 2021/09/27
【摘要】 📢前言该文章是WebView 插件系列文章,传送门:浏览器插件3D WebView专栏上一篇文章对3D WebView 插件的 IWebView 做了一个详细的介绍说明那本篇文章就来介绍下 WebViewPrefab的说明和使用方法 核心模块 网络视图预制件—WebViewPrefabWebViewPrefab是一个预制件,可以在 3D 世界空间中轻松查看IWebView并与之交互。它负...

📢前言

该文章是WebView 插件系列文章,传送门:浏览器插件3D WebView专栏

上一篇文章对3D WebView 插件IWebView 做了一个详细的介绍说明

那本篇文章就来介绍下 WebViewPrefab的说明和使用方法

请添加图片描述


核心模块 网络视图预制件—WebViewPrefab

WebViewPrefab是一个预制件,可以在 3D 世界空间中轻松查看IWebView并与之交互。它负责创建 IWebView、显示其纹理以及处理来自用户的指针交互,如单击、拖动和滚动。
因此,您需要做的就是指定要加载的 URL 或 HTML,然后用户可以查看它并与之交互。

创建 WebViewPrefab 有两种方法:

  • 通过编辑器将WebViewPrefab.prefab文件拖到场景中并设置其“初始 URL”属性。
  • 或者通过使用WebViewPrefab.Instantiate()以编程方式创建实例,等待它初始化,然后调用其WebView属性上的方法,如LoadUrl()。

如果用例需要高度自定义,可以使用Web.CreateWebView()在预制件之外创建一个 IWebView 。

核心API调用方法

WebViewPrefab公共属性
在这里插入图片描述
1.单击启用
bool ClickingEnabled
确定是否启用单击。

2.对撞机
Collider Collider { get; }
获取预制件的碰撞器

3.拖动模式
DragMode DragMode
确定预制件如何处理拖动交互。

4.拖动阈值
float DragThreshold
确定触发拖动的阈值(以网络像素为单位)。默认值为 20。

  • 当预制件的DragMode设置为DragToScroll 时,此属性确定指针在不再被视为单击之前必须拖动的距离。
  • 当预制件的DragMode设置为DragWithinPage 时,此属性确定指针在页面内触发拖动之前必须拖动的距离。

5.悬停已启用
bool HoveringEnabled
确定是否启用悬停交互。

6.初始分辨率
float InitialResolution
以每个 Unity 单位的像素为单位设置 webview 的初始分辨率。您可以更改分辨率以使 Web 内容看起来更大或更小。WebViewPrefab 的默认分辨率是1300.

7.初始网址
string InitialUrl
如果您通过编辑器将 WebViewPrefab.prefab 拖入场景,您可以在编辑器中设置此属性,使其在实例初始化后自动加载给定的 URL。

8.日志控制台消息
bool LogConsoleMessages
确定是否将来自IWebView.ConsoleMessageLogged 的JavaScript 控制台消息打印到 Unity 日志中。

9.材料
Material Material { get; set; }
获取或设置预制件的材质。

10.是否启用系统本机键盘
bool NativeOnScreenKeyboardEnabled
确定当 webview 中的文本输入被聚焦时是否自动显示操作系统的本机屏幕键盘。WebViewPrefab 的默认值是false.

11.启用远程调试
bool RemoteDebuggingEnabled
确定是否启用远程调试。

12.滚动已启用
bool ScrollingEnabled
确定是否启用滚动。

13.滚动灵敏度
float ScrollingSensitivity
允许调整滚动灵敏度。WebViewPrefab 的默认敏感度是0.005.

14.可见的
bool Visible { get; set; }
获取或设置实例是否可见。默认值为true.

15.网页视图
IWebView WebView { get; }
获取预制件的 IWebView,在引发Initialized事件后可用。在初始化完成之前,这个属性是null。


WebViewPrefab公共方法
在这里插入图片描述
1.转换到屏幕点
Vector2 ConvertToScreenPoint(Vector3 worldPosition)
将给定的世界位置转换为标准化的屏幕点。返回点的x和y分量是 0 到 1 之间的标准化值。

2.破坏
void Destroy()
销毁实例及其子实例。请注意,如果您使用Object.Destroy()销毁实例的父级,则不需要调用此方法。

3.实例化
static WebViewPrefab Instantiate(float width, float height, WebViewOptions options)
与Instantiate(float, float ) 一样,除了它也接受一个选项标志对象,可用于更改生成的 webview 的行为。

4.实例化
static WebViewPrefab Instantiate(float width, float height)
使用 Unity 单位中的给定尺寸创建一个新实例。所述web视图属性初始化完成,它是由所指示的后可用初始化事件或WaitUntilInitialized() 。webview 的默认分辨率是每个 Unity 单位 1300px,但可以使用IWebView.SetResolution()进行更改。

例子
// Create a 0.5 x 0.5 instance
var webViewPrefab = WebViewPrefab.Instantiate(0.5f, 0.5f);
// Position the prefab how we want it
webViewPrefab.transform.parent = transform;
webViewPrefab.transform.localPosition = new Vector3(0, 0f, 0.5f);
webViewPrefab.transform.LookAt(transform);
// Load a URL once the prefab finishes initializing
webViewPrefab.Initialized += (sender, e) =>; {
    webViewPrefab.WebView.LoadUrl("https://vuplex.com");
};

5.实例化
static WebViewPrefab Instantiate(IWebView webView)
与Instantiate(float, float) 一样,除了它使用现有的已初始化 IWebView 实例初始化实例。这会导致 WebViewPrefab 使用现有的 IWebView 实例而不是创建一个新实例。

6.调整大小
void Resize(float width, float height)
将预制网格和 webview 的大小调整为 Unity 单位中的给定尺寸。webview 的默认分辨率是每个 Unity 单位 1300px,但可以使用IWebView.SetResolution()进行更改 。

7.设置指针输入检测器
void SetPointerInputDetector(IPointerInputDetector pointerInputDetector)
默认情况下,预制件通过 Unity 的事件系统检测诸如单击之类的指针输入事件,但您可以使用此方法来覆盖检测输入事件的方式。

8.SetWebViewForInitialization
void SetWebViewForInitialization(IWebView webView)
默认情况下,预制件在初始化期间创建一个新的 IWebView。但是,您可以在预制件初始化之前调用此方法,以将现有的、已初始化的 IWebView 传递给它以供使用。此方法只能在预制件初始化之前调用(即直接在实例化它或将其设置为活动之后)。

9.等待直到初始化
Task WaitUntilInitialized()
返回一个任务,该任务在预制件初始化时(即当其WebView属性准备好使用时)解决。


WebViewPrefab公共活动
在这里插入图片描述
1.点击
EventHandler<ClickedEventArgs> Clicked
表示点击了预制件。请注意,预制件会自动为您调用IWebView.Click()。

2.已初始化
EventHandler Initialized
表示预制件已完成初始化,因此其WebView属性已准备好使用。

3.滚动
EventHandler<ScrolledEventArgs> Scrolled
表示预制件已滚动。请注意,预制件会自动为您调用IWebView.Scroll()。


示例

1.手动初始化WebViewPrefab的网址
这样WebViewPrefab的默认连接网址就成了我们设置的!直接调用API方法即可

 _webViewPrefab.InitialUrl = "http://www.baidu.com";

2.设置WebView的尺寸
使用 Unity 单位中的给定尺寸创建一个新实例
这里注意是创建一个新的实例的时候直接修改的尺寸,并不是创建完了之后进行修改!

  WebViewPrefab.Instantiate(500,600);

3.网页视图已初始化

      _mainWebViewPrefab.Initialized += (initializedSender, initializedEventArgs) => {
            //初始化后可以在这个活动里面 添加一些事件 或者 执行某些方法
            _mainWebViewPrefab.WebView.LoadUrl("https://www.baidu.com");
        };

总结

本文介绍了插件的核心模块 网络视图预制件—WebViewPrefab

该预制体是显示网页的重要对象,浏览器的网页视图就是通过这个WebViewPrefab显示出来的

也有很多API方法可以调用,文中也给出了几个示例,其他API都可以使用!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。