当前位置: 首页 > news >正文

unity 浏览器插件【embedded browser(原zfbrowser)】简单教程,使unity支持web h5页面,附软件下载链接

一 简介

这是个在项目中使用了很久的浏览器插件。
很负责任的说这是在pc平台上最好用的浏览器插件
商业付费价格78刀,相比3d webview等插件动不动就178、368的价格就显得很良心
最新版下载链接(请勿商用)

1.1 功能概述

基本和普通浏览器无异

  1. 支持调试台Devtools功能
  2. 支持evil js
  3. 支持h5 原生视频播放
  4. 支持控制台捕获
  5. 支持unity to js, js to unity通信
  6. 支持鼠标键盘事件
  7. 支持各种浏览器操作,包括前进后退刷新打印复制剪切粘贴等
  8. 支持多窗口
  9. 支持vr输入
    还有很多功能等你慢慢发现
1.2 安装

与其他unity插件相同,下载解压后双击即可完成安装。安装完成后project窗口会多出个ZFbrowser文件夹。demo目录下有测试场景。
在这里插入图片描述

二 使用教程

2.1 准备工作
  1. 在场景中添加ui canvas 和 RawImage物体
    在这里插入图片描述
  2. 在RawImage物体中添加以下组件,这几个组件分别是:浏览器主题组件Browser,虚拟鼠标交互组件 Pointer UIGUI,箭头显示组件 Cursor Renderer OS
    在这里插入图片描述
    3 再新建个c#脚本BrowserMessager 作为组件放到该物体上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZenFulcrum.EmbeddedBrowser;[RequireComponent(typeof(Browser))]
public class BrowserMessager : MonoBehaviour
{private Browser browser;void Start(){// 获取当前物体上的Browser组件browser = GetComponent<Browser>();}
}
2.2 加载外部网址
  1. 在刚才新建的脚本中添加加载外部网址方法“browser.LoadURL()”
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZenFulcrum.EmbeddedBrowser;[RequireComponent(typeof(Browser))]
public class BrowserMessager : MonoBehaviour
{private Browser browser;void Start(){browser = GetComponent<Browser>();// 跳转到百度首页browser.LoadURL("www.baidu.com",true);}
}

直接运行即可看到百度首页

2.2 直接运行html代码

调用“browser.LoadHTML()”方法

browser.LoadHTML("<html><head><style>p{color: red;}</style></head><body><title>这是个html代码</title><p>html内容</p></body></html>");
2.3 加载unity本地html文件

加载本地文件有三个情况:

  1. 加载unity工程里的网页资源
  2. 加载assetbundle打包的网页资源
  3. 加载本地硬盘的网页资源
2.3.1 加载unity工程里的网页资源

1 首先在Assets平级目录中建立BrowserAssets文件夹。注意是平级,不是下级!
在这里插入图片描述
2 将创建好的html页面和其他资源扔进去
在这里插入图片描述
3 在browser组件的url 设置中改为 localGame://demo/1.html
localGame会自动定位到BrowserAssets目录。 demo是我建的文件夹。1.html就是要运行的网页

注意:
如果网页里面有同文件夹的资源调用别忘了去掉"/"。 例如下面代码,如果是外部网页资源应该加上斜杠, 。如果是本地资源就应该去掉斜杠

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body><img id = "img" src="图.png" alt=""> 
</body>
</html>
2.3.2 加载assetbundle打包的网页资源
2.3.3 加载本地硬盘的网页资源

加载本地硬盘的网页资源还用我说了吗,要么起个服务直接给网址,要么使用system.io找到文件地址

三 unty与html通信

网页js与unity通信,至少需要分别实现html和c#两个脚本

3.1 通信:HTML => UNITY

html代码可以按上文所述放置在本地或服务器上。c#脚本作为组件添加到某物体上

html代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body>// 创建一个按钮,绑定方法"jsevent"<button type="button" onclick="jsevent()">点击按钮通信给unity</button>  <script type="text/javascript">function jsevent() {console.log("传参");}</script>
</body>
</html>
c#代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZenFulcrum.EmbeddedBrowser;
using ZenFulcrum.EmbeddedBrowser.VR;[RequireComponent(typeof(Browser))]
public class BrowserMessager : MonoBehaviour
{private Browser browser;void Start(){browser = GetComponent<Browser>();//监听html 中的jsevent方法browser.RegisterFunction("jsevent", (JSONNode jv) =>{// js多参数输入Debug.Log(jv[0].Value);});}
}

点击通信按钮
在这里插入图片描述
unity这边就捕获到了信息
在这里插入图片描述
捕获信息也可以在html那边直接用console.log打印出来,然后在c#中调用

browser.onConsoleMessage += (string s1, string s2) => {Debug.Log("js console info:" + s1 + s2);
};

直接捕获控制台数据。不过为了区分数据需要添加数据组合规则较麻烦。

3.2 UNITY => HTML

js代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script type="text/javascript">//被unity调用的函数function unityevent(item) {console.log("unity参数:",item);}</script>
</body>
</html>

c#代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZenFulcrum.EmbeddedBrowser;
using ZenFulcrum.EmbeddedBrowser.VR;[RequireComponent(typeof(Browser))]
public class BrowserMessager : MonoBehaviour
{private Browser browser;void Start(){browser = GetComponent<Browser>();}private void Update(){if (Input.GetKey(KeyCode.Space)){browser.CallFunction("unityevent", "unity to js").Done();}}
}

执行程序号,按下space按键,即可看到js代码中unityevent所打印的参数了
在这里插入图片描述

四 其他api

直接执行js代码
browser.EvalJS("console.warning(\"this is jscode\")");
监听浏览器控制台输出
browser.onConsoleMessage += (string s1, string s2) => {Debug.Log(s1 + "====" + s2);
};
直接跳转到网址
browser.LoadURL("www.baidu.com",true);
直接执行html代码
browser.LoadHTML("<html><head><style>p{color: red;}</style></head><body><title>123123</title><p>html代码</p></body></html>");
网页完成加载时触发的事件
        browser.onLoad += (JSONNode jn) => {Debug.Log("浏览器完成加载");};

相关文章:

unity 浏览器插件【embedded browser(原zfbrowser)】简单教程,使unity支持web h5页面,附软件下载链接

一 简介 这是个在项目中使用了很久的浏览器插件。 很负责任的说这是在pc平台上最好用的浏览器插件 商业付费价格78刀&#xff0c;相比3d webview等插件动不动就178、368的价格就显得很良心 最新版下载链接&#xff08;请勿商用&#xff09; 1.1 功能概述 基本和普通浏览器无…...

LeetCode算法位运算—只出现一次的数字

目录 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 代码&#xff1a; 运行结果&#xff1a; 补充 异或的重要性质 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 给你一个 非空 整数数组 nums &#xff0c;除了某…...

vcpkg manifest 的使用

最近项目上要使用 CMakeLists 管理&#xff0c;由于 Windows 版本有依赖到 vcpkg 提供的库&#xff0c;所以需要使用 vcpkg manifest 来统一设置库的版本&#xff0c;方便后续维护 推荐一个文章&#xff0c;介绍的可以说是非常全面了 VCPKG 特性 - Versioning 不过里面也有一些…...

选择什么电容笔比较好?平板手写笔推荐

由于苹果Pencil的热销&#xff0c;让华国内市场上&#xff0c;也出现了不少的平替式电容笔&#xff0c;这些产品&#xff0c;有好有坏&#xff0c;价格也很公道。不过&#xff0c;也有很多产品的价格都很平价。我是一个拥有多年经验的数码发烧友&#xff0c;在前几年就开始用上…...

pdf转二维码怎么做?pdf二维码制作简单技巧

pdf是一种很常见的文件储存格式&#xff0c;一般通知、发票、简历都会保存为这种格式来使用&#xff0c;那么需要将pdf格式文件做成二维码&#xff0c;该用什么方式来制作呢&#xff1f;下面给大家分享一个pdf转二维码的在线工具&#xff0c;可以通过上传文件一键生成二维码&am…...

【CANoe】TX Self-ACK自应答配置与CPAL实现

一、引言 在测试CAN&CANFD通信或者网络管理的时候&#xff0c;我们经常遇到使用报文&#xff08;网络管理报文或者通信报文&#xff09;唤醒被测件这个测试点&#xff0c;如果测试比较多的情况下&#xff0c;我们就会发现&#xff0c;如果CANoe没有接被测件或者被测件没有…...

(Python)MATLAB mat矩阵和Python npy矩阵转换

Python np.ndarray矩阵转换为MATLAB mat文件 import numpy as npimport scipy.io as iomat_path mat_save_pathmat np.zeros([6, 128])io.savemat(mat_path, {name: mat})Python读取MATLAB mat文件 import numpy as np from scipy import iomat io.loadmat(your_mat_file.…...

Flink1.14 SourceReader概念入门讲解与源码解析 (三)

目录 SourceReader 概念 SourceReader 源码方法 void start(); InputStatus pollNext(ReaderOutput output) throws Exception; List snapshotState(long checkpointId); CompletableFuture isAvailable(); void addSplits(List splits); 参考 SourceReader 概念 Sour…...

PS运行中缺失d3dcompiler_47.dll问题的5个有效修复方法总结

在使用ps作图的时候&#xff0c;我们有时会遇到一些问题&#xff0c;其中之一就是“PS运行中缺失d3dcompiler_47.dll”的问题。这个问题可能会导致PS无法正常运行&#xff0c;“d3dcompiler_47.dll”。这是一个动态链接库文件&#xff0c;它是DirectX的一部分&#xff0c;主要负…...

【MATLAB-Retinex图像增强算法的去雾技术】

续&#xff1a;【MATLAB-基于直方图优化的图像去雾技术】 【MATLAB-Retinex图像增强算法的去雾技术】 1 原图2 MATLAB实现代码3 结果图示 参考书籍&#xff1a;计算机视觉与深度学习实战:以MATLAB、Python为工具&#xff0c; 主编&#xff1a;刘衍琦, 詹福宇&#xff0c; 王德建…...

使用 2 个 HSplitView 在 swiftUI 中创建一个 3 窗格界面

Pet*_*ter 8 嗯&#xff0c;我会的。在断断续续地挣扎了几个星期之后&#xff0c;在我问这个问题一个小时后&#xff0c;我似乎解决了它&#xff01;只需将第二个 HSplitView 的 layoutPriority 设置为 1&#xff0c;并将中心视图也设置为 1。当你想到它时是有道理的&#xff1…...

【C++ 操作符重载:定制自己的运算符行为】

在C编程中&#xff0c;操作符重载是一项强大的特性&#xff0c;它允许程序员定制内置运算符的行为&#xff0c;使它们适用于用户自定义的数据类型。这篇博客将介绍什么是操作符重载&#xff0c;如何使用它&#xff0c;以及一些最佳实践。 什么是操作符重载&#xff1f; 操作符…...

Android Fragment 基本概念和基本使用

Android Fragment 基本概念和基本使用 一、基本概念 Fragment&#xff0c;简称碎片&#xff0c;是Android 3.0&#xff08;API 11&#xff09;提出的&#xff0c;为了兼容低版本&#xff0c;support-v4库中也开发了一套Fragment API&#xff0c;最低兼容Android 1.6。 过去s…...

xml schema中的all元素

说明 xml schema中的all元素表示其中的子元素可以按照任何顺序出现&#xff0c;每个元素可以出现0次或者1次。 https://www.w3.org/TR/xmlschema-1/#element-all maxOccurs的默认值是1&#xff0c;minOccurs 的默认值是1。 举例 <element name"TradePriceRequest&…...

Java8实战-总结42

Java8实战-总结42 用Optional取代null应用 Optional 的几种模式默认行为及解引用 Optional 对象两个 Optional 对象的组合使用 filter 剔除特定的值 用Optional取代null 应用 Optional 的几种模式 默认行为及解引用 Optional 对象 采用orElse方法读取这个变量的值&#xff0…...

实现日期间的运算——C++

&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️ &#x1f4a5;个人主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王&#x1f525;&#x1f525;&#x1f525; &#x1f4a5;代码仓库&#xff1a;&#x1f525;&#x1f525;魔…...

云上攻防-云原生篇K8s安全Config泄漏Etcd存储Dashboard鉴权Proxy暴露

文章目录 云原生-K8s安全-etcd未授权访问云原生-K8s安全-Dashboard未授权访问云原生-K8s安全-Configfile鉴权文件泄漏云原生-K8s安全-Kubectl Proxy不安全配置 云原生-K8s安全-etcd未授权访问 攻击2379端口&#xff1a;默认通过证书认证&#xff0c;主要存放节点的数据&#x…...

ChatGPT 的工作原理学习 难以理解 需要先找个容易的课来跟下。

ChatGPT 的工作原理 传统搜超搜引擎原理&#xff1a;蜘蛛抓取和数据收集&#xff0c;用户交互查找。 ChatGPT 的工作原理&#xff1a;数据收集称为预训练&#xff0c;用户响应阶段称为推理。 ChatGPT是一种基于自然语言处理技术的人工智能模型&#xff0c;它的工作原理建立在…...

5.DApp-前端网页怎么连接MetaMask

题记 在前端网页连接metamask&#xff0c;以下是全部操作流程和代码。 编写index.html文件 index.html文件如下&#xff1a; <!DOCTYPE html> <html> <head> <title>My DApp</title> <!--导入用于检测Metamask提供者的JavaScript库--> &l…...

手机应用app打开游戏显示连接服务器失败是什么原因?排查解决方案?

亲爱的同学们&#xff0c;有时候我们在使用手机设备时&#xff0c;可能会遇到一个很头疼的问题——连接服务器失败。这个问题不仅让我们感到困扰&#xff0c;还影响到了我们的用户体验。那么&#xff0c;我们究竟能如何解决这个问题呢&#xff1f;今天&#xff0c;笔者就和大家…...

VR摩托车|沉浸式交通安全教育的新方向

在交通安全教育不断创新的今天&#xff0c;如何让参与者真正理解风险、形成安全意识&#xff0c;成为教育场景中的关键问题。传统的宣讲与视频观看虽然信息完整&#xff0c;却常因缺乏代入感而难以真正触动体验者。而“VR摩托车”作为一款结合虚拟现实技术、实景交互系统和交通…...

DownKyi:3分钟学会B站视频下载的终极免费方案

DownKyi&#xff1a;3分钟学会B站视频下载的终极免费方案 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。…...

新能源/电力系统论文中的应用及盲审注意事项

在新能源/电力系统方向学术论文研究中&#xff0c;气象数据的权威性、精度及适配性直接影响论文盲审结果。羲和能源气象大数据平台作为该领域常用的气象数据支撑工具&#xff0c;其数据处理流程、适配特性与学术规范适配性较强&#xff0c;可有效提升论文盲审通过率。本文结合盲…...

构建高效Cursor Pro功能解锁的模块化架构实现指南

构建高效Cursor Pro功能解锁的模块化架构实现指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial request limi…...

3步上手AssetStudio:从Unity游戏资源提取到格式转换全攻略

3步上手AssetStudio&#xff1a;从Unity游戏资源提取到格式转换全攻略 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and additio…...

从演示到实战:基于快马平台构建一个功能完整的AI绘画社区应用

今天想和大家分享一个很有意思的实战项目 - 在InsCode(快马)平台上构建一个功能完整的AI绘画社区应用。这个想法来源于阿里悟空官网展示的AI绘画应用场景&#xff0c;但我们要做的是更贴近真实产品的综合性解决方案。 项目整体规划 首先需要明确&#xff0c;一个完整的AI绘画社…...

EB Garamond 12:终极免费复古字体完整使用指南与安装教程

EB Garamond 12&#xff1a;终极免费复古字体完整使用指南与安装教程 【免费下载链接】EBGaramond12 项目地址: https://gitcode.com/gh_mirrors/eb/EBGaramond12 EB Garamond 12是一款基于16世纪经典Garamond字体设计的开源免费字体&#xff0c;完美复刻文艺复兴时期的…...

JIT加速不生效?你漏掉了这4个强制启用开关,3.14新增--enable-jit-unsafe-mode正在被92%团队忽略

第一章&#xff1a;JIT加速不生效&#xff1f;你漏掉了这4个强制启用开关&#xff0c;3.14新增--enable-jit-unsafe-mode正在被92%团队忽略Go 3.14 引入了激进的 JIT 编译优化路径&#xff0c;但默认关闭全部 JIT 后端。大量团队在升级后观察到 GOMAXPROCS8 下 CPU 利用率未提升…...

Z-Image-GGUF文生图案例分享:看看AI能画出多美的图片

Z-Image-GGUF文生图案例分享&#xff1a;看看AI能画出多美的图片 1. 开篇&#xff1a;当文字遇见画笔 想象一下&#xff0c;你只需要输入一段描述&#xff0c;就能得到一张精美的图片。这不是科幻电影里的场景&#xff0c;而是Z-Image-GGUF带给我们的现实体验。作为阿里巴巴通…...

暗黑破坏神2存档修改终极指南:告别十六进制编辑,3步完成角色定制

暗黑破坏神2存档修改终极指南&#xff1a;告别十六进制编辑&#xff0c;3步完成角色定制 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款专为《暗黑破坏神2》玩家设计的Web存档编辑器&#xff0c;通过直观的可视…...