unity3d使用3D WebView播放网页中的视频

ops/2024/9/23 5:17:04/

Unity2021.3.35f1,硬件ESP32-Cam,3D WebView插件

1.新建工程,导入3D WebView for Winfows和3D WebView for Android

2.打开场景Assets\Vuplex\WebView\Demos\Scenes\2_CanvasWebViewDemo

3.修改Canvas的Render Mode为Screen Space-Camera,修改Canvas Scaler

4.修改CanvasWebViewPrefab的组件RectTransform的对齐方式和宽高,宽高与分辨率相同

5.修改CanvasWebViewPrefab中的网址,Resolution改为1(实为缩放)

6.运行程序即可看到视频

7.导入OpenCV for Unity 2.5.9

8.创建Scripts文件夹,再创建Test.cs,打开编辑代码

using OpenCVForUnity.CoreModule;
using OpenCVForUnity.ImgprocModule;
using OpenCVForUnity.UnityUtils;
using UnityEngine;
using UnityEngine.UI;
using Vuplex.WebView;
using Vuplex.WebView.Internal;public class Test : MonoBehaviour
{public RawImage rawImage;public CanvasWebViewPrefab view;public CanvasViewportMaterialView vp;Texture2D texture;Texture2D texture1;RenderTexture _tmpRenderTexture;bool init = false;// Start is called before the first frame updatevoid Start(){#if UNITY_ANDROIDview.OnNewTextureHandle += OnRenderTex;
#endif}void OnRenderTex(EventArgs<Texture2D> eventArgs){Draw(eventArgs.Value);}private void Update(){
#if UNITY_STANDALONE_WIN || UNITY_EDITORTexture2D tx = vp.Texture as Texture2D;Draw(tx);
#endif}void Draw(Texture2D tx){if (tx == null){return;}if (!init){texture = new Texture2D(tx.width, tx.height, TextureFormat.ARGB32, false);texture1 = new Texture2D(tx.width, tx.height, TextureFormat.ARGB32, false);init = true;}Mat cameraMat = new Mat(tx.height, tx.width, CvType.CV_8UC4);Point pt = new Point(tx.width / 2, tx.height / 2);Utils.textureToTexture2D(tx, texture);Utils.texture2DToMat(texture, cameraMat);Imgproc.circle(cameraMat, pt, 30, new Scalar(255, 0, 0), 3);Utils.matToTexture2D(cameraMat, texture1);rawImage.texture = texture1;}}

9.创建实体Test,添加Test组件,并给变量赋值

10.运行程序,可以在RawImage中看到一个圆圈。

至此Windows环境已适配完成。

下面开始适配安卓版

11.去掉勾选CanvasWebViewPrefab组件中的Native 2D Mode (Android, iOS, WebGL, and UWP only)

12.将平台切换到Android,在Player Setting...中Graphics APIS 添加Vulkan

13.打开Assets\Vuplex\WebView\Core\Scripts\BaseWebViewPrefab.cs添加如下代码

        public delegate void OnNewTexture(EventArgs<Texture2D> eventArgs);public OnNewTexture OnNewTextureHandle;
if (OnNewTextureHandle != null)
{OnNewTextureHandle(eventArgs);
}

13.发布apk,在手机上运行,即可看到与PC相同的效果


http://www.ppmy.cn/ops/30247.html

相关文章

【c语言实现内核链表】

在C语言中实现内核链表可以参考以下步骤&#xff1a; 定义链表节点结构&#xff1a;创建一个表示链表节点的结构体&#xff0c;通常包含一个数据成员和一个指向下一个节点的指针。 struct ListNode {// 数据成员int data;// 指向下一个节点的指针struct ListNode* next; };初…

flutter、kotlin、java中将方法作为入参的区别

1、带参数带返回值的方法作为入参 &#xff08;1&#xff09;flutter 定义 int add(int a, int b) > a b; int subtract(a, b) > a - b;performOperation(int a, int b, int Function(int, int) function) > function(a, b);// //简化写法 // add(a, b) > a b…

旅游新策略,共享与补贴助力地方经济繁荣

在当前的经济环境中&#xff0c;旅游业对于地方经济增长的重要性日益凸显。各个城市都在积极探索增加旅游流量的方法&#xff0c;以刺激本地经济的增长。 例如&#xff0c;淄博政府通过政策推动和合作模式&#xff0c;成功吸引了大量游客&#xff0c;这成为了一个成功的案例。…

西电大数据安全与隐私(现代密码学基础技能)

西电大数据安全与隐私(现代密码学基础技能) 大数据安全与隐私这门课的lab1,要求如下图: 采用的方案是RSA和AES相结合, 利用RSA来加密传输AES的密钥, 用AES的密钥来加密数据. 如果使用RSA加密数据, 虽然安全性会更高, 但效率低. AES加解密效率高, 但安全性会差一些, 所以采用RS…

SpringBoot使用git-commit-id-maven-plugin打包

简介 git-commit-id-maven-plugin 是一个maven 插件&#xff0c;用来在打包的时候将git-commit 信息打进jar中。 这样做的好处是可以将发布的某版本和对应的代码关联起来&#xff0c;方便查阅和线上项目的维护。至于它的作用&#xff0c;用官方说法&#xff0c;这个功能对于大…

《原则》生活和工作 - 三余书屋 3ysw.net

原则&#xff1a;生活和工作 您好&#xff0c;今天我们解读的书是《原则&#xff1a;生活和工作》。这本书和我们之前解读过的《原则&#xff1a;应对变化中的世界秩序》是同一个作者写的。那本书的主题非常宏大&#xff0c;它讨论的是世界运行的原则。而今天我们聊的《原则&a…

selenium 4.x 之验证码处理(python)

验证码处理 一般情况公司如果涉及web自动化测试需要对验证码进行处理的方式一般有一下几种&#xff1a; 关闭验证码功能&#xff08;开发处理&#xff09;设置万能验证码&#xff08;开发处理&#xff09;使用智能识别库进行验证 通过第三方打码平台识别验证码 1. 跳过验证功…

php使用Canal监听msyql

canal需要java8 去官网下载java8 安装JAVA #创建目录 mkdir -p /usr/local/java/ #解压到目录 tar zxvf jdk-8u411-linux-x64.tar.gz -C /usr/local/java/配置环境变量在 /etc/profile 最后加入 export JAVA_HOME/usr/local/java/jdk1.8.0_411 export CLASSPATH.:$JAVA_HOM…