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

Unity实现安卓App预览图片、Pdf文件和视频的一种解决方案

一、问题背景

最近在开发app项目,其中有个需求就是需要在app软件内显示图片、pdf和视频,一开始想的解决方案是分开实现,也就是用Image组件显示图片,找一个加载pdf的插件和播放视频的插件,转念一想觉得太麻烦了,于是就想着看能不能想电脑浏览器打开图片、pdf和视频一样直接加载显示就可以了。于是就找了Unity安卓端可以渲染网页的插件,看到网上都比较推荐使用UniWebView,我也试了,有两个原因使我放弃了它,1、加载网页的流程有点繁琐,具体使用就知道了;2、安卓渲染pdf文件软件直接闪退了(致命原因)。后来经过一番测试,最终决定使用3D WebView for Android这款插件,它可以满足同一UI组件渲染图片、pdf和视频这一需求。

二、插件介绍

3DWeView for Android(适用于Android的3D WebView),很强大,可以渲染3D和2D网页,还可以交互。官网地址:vuplex官网。
在这里插入图片描述

主要功能:

  • 从指定URL或Html字符串加载网页
  • 使用HTML创建UI
  • 快速开始使用 3D WebViewPrefab 或 2D CanvasWebViewPrefab,它们渲染为 Texture2D 并处理用户交互(单击、滚动、悬停、拖动)
  • 包括针对移动设备优化的原生 2D 模式
  • 使用随附的屏幕键盘或本机键盘键入
  • 查看和创建 PDF
  • 可以实现 C# 和JavaScript的双向通信。
    反正就是挺强大的一款渲染网页的插件,具体可以到官网了解,也有非常详细的开发文档可以参考。所以用来满足我们今天的需求简直就是小菜一碟。

二、解决方案

本博客通过搭建Demo演示场景,实现App内通过3DWeView for Android打开本地地址渲染本地图片、pdf文件和视频的一种解决方案,仅供参考。

1、准备工作
  • 3D WebView for Android SDK需要开发者准备完整的Unity开发环境与Android Build Support环境
  • Unity 2018.3或更高版本
  • Android Platform 5+
2、搭建测试场景

1、新建项目和场景,将sdk导入都项目工程中,创建Canvas,从Vuplex–WebView–Core–Prefabs–Resources文件夹下将
CanvasWebViewPrefab预制体拖入到Canvas下,再新建三个按钮,分别用来测试点击打开图片、pdf和视频的。
在这里插入图片描述
2、因为这里使用的是2D界面来显示网页,所有主要勾选CanvasWebViewPrefab下的Native 2D Mode(它将允许你操作网页试图,如双指缩放等…)
在这里插入图片描述

3、编写测试代码

测试demo主要测试加载本地图片、pdf和视频渲染在网页上,主要测试代码如下:

using UnityEngine;
using UnityEngine.UI;
using Vuplex.WebView;public class TestWeb : MonoBehaviour
{//获取到CanvasWebViewPrefab 的引用,主要用于渲染网页public CanvasWebViewPrefab webPrefab;public Button openPicture;public Button openPdf;public Button openVideo;void Start(){openPicture.onClick.AddListener(() =>{string url = "streaming-assets://File/画板.png";webPrefab.WebView.LoadUrl(url);});openPdf.onClick.AddListener(() =>{string url = "streaming-assets://File/数据结构与算法.pdf";webPrefab.WebView.LoadUrl(url);});openVideo.onClick.AddListener(() =>{string url = "streaming-assets://File/M09-1317.mp4";webPrefab.WebView.LoadUrl(url);});}
}

在这里插入图片描述
将脚本挂载到任意场景中游戏对象上,将相关对象引用分别赋值,由于这是Android,所有编辑器运行看不到效果,需要发布成apk文件。

4、发布apk测试

1、渲染图片成功
请添加图片描述

2、渲染pdf成功请添加图片描述

3、渲染视频成功
请添加图片描述

三、总结

1、3D WebView是一款十分强大的网页渲染插件,用于加载文件显示简直就是大材小用,可以多去官网学习学习其他用法。3DWebView for Android官方开发文档
2、它还可以加载其他文件夹下的文件,也可以打开网上的在线资源

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SpringBootWeb 篇-入门了解 Swagger 的具体使用
  • 详细谈谈负载均衡的startupProbe探针、livenessProbe探针、readnessProbe探针如何使用以及使用差异化
  • 【深度学习】图形模型基础(5):线性回归模型第三部分:线性回归模型拟合
  • sqlmap使用之-post注入、head注入(ua、cookie、referer)
  • 【HarmonyOS】获取通讯录信息
  • hudi数据湖万字全方位教程+应用示例
  • 14-47 剑和诗人21 - 2024年如何打造AI创业公司
  • google Guava组件实现原理和Java使用场景【主要是本地缓存Cache】
  • 如何理解Node.js?NPM?Yarn?Vue?React?
  • mybatis动态传入参数 pgsql 日期 Interval ,day,minute
  • FastGPT+OneAI接入网络模型
  • python调用阿里云汇率接口
  • 开放式耳机哪款性价比高?这五款超值精品不容错过
  • YOLOv5改进 | 注意力机制| 对小目标友好的BiFormer【CVPR2023】
  • 数据分析:小红书户外风潮起,内容种草新密码
  • JavaScript-如何实现克隆(clone)函数
  • angular组件开发
  • C++11: atomic 头文件
  • CSS相对定位
  • golang 发送GET和POST示例
  • iOS | NSProxy
  • JS变量作用域
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Next.js之基础概念(二)
  • python3 使用 asyncio 代替线程
  • Service Worker
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 多线程 start 和 run 方法到底有什么区别?
  • 翻译:Hystrix - How To Use
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 理解在java “”i=i++;”所发生的事情
  • 理清楚Vue的结构
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 浅谈Golang中select的用法
  • 我的业余项目总结
  • 怎么把视频里的音乐提取出来
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​ssh免密码登录设置及问题总结
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • ( 10 )MySQL中的外键
  • (31)对象的克隆
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (ibm)Java 语言的 XPath API
  • (java)关于Thread的挂起和恢复
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)linux使用docker容器运行mysql
  • (四)软件性能测试
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET Core 版本不支持的问题
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net 调用php,php 调用.net com组件 --
  • .Net7 环境安装配置