首页 > 其他分享 >Unity实现安卓App预览图片、Pdf文件和视频的一种解决方案

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

时间:2024-07-09 18:31:03浏览次数:21  
标签:插件 网页 渲染 App Unity pdf Pdf WebView Android

一、问题背景

最近在开发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、它还可以加载其他文件夹下的文件,也可以打开网上的在线资源

标签:插件,网页,渲染,App,Unity,pdf,Pdf,WebView,Android
From: https://blog.csdn.net/qq_42437783/article/details/140253924

相关文章

  • APICloud+ cosClient快速构建APP
    APICloud简介APICloud是一个移动低代码开发平台,对于不同的需求场景提供了不同的功能模块,并快速构建企业级应用。cosClient模块简介cosClient是腾讯云对象存储(COS)针对APICloud平台桥接原生SDK封装的模块,可以使用cosClient快速接入并使用COS的功能,目前支持Android、iOS。在APIC......
  • C++ pdf库总结
     mupdf#include"widget.h"#include"ui_widget.h"#include<QMessageBox>#include<QDebug>#include<QImage>#include<QPixmap>#include<QLabel>#include"mupdf/fitz.h"#include"mupdf/pd......
  • Vue3 pdf.js将二进制文件流转成pdf预览
    好久没写东西,19年之前写过一篇Vue2将pdf二进制文件流转换成pdf文件,如果Vue2换成Vue3了,顺带来一篇文章,pdf.js这个东西用来解决内网pdf预览,是个不错的选择。首先去pdfjs官网,下载需要的文件然后将下载的东西放到public文件下接下来看一下代码<auto-dialogtitle="PDF预......
  • MyBatisPlus的Mapper.xml入参List执行in函数
    使用情景这个是开发过程中比较常见的情景,入参一个list,在Mapper.xml里面执行sql的in函数,今天来记录下这个问题,希望可以给大家一点帮助启发。Mapper文件解决方案xml文件<selectid="get"resultType="com.vo.tVo">SELECTnameFROMus......
  • uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据@getIndex点击事件获
    项目场景:uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据@getIndex点击事件获取点击的地区下标和地区名例如:问题描述官方给的文档有限,需要自己下载地图json数据然后自己渲染和编写鼠标悬浮显示内容以及获取点击地址名称,官方只给了@getIndex事件获取下......
  • 推荐一款去除PDF水印的工具:PDF水印去除工具
    PDF水印去除工具是一款针对色差较大的水印进行去除,什么叫色差较大,就是水印的颜色跟你文档的颜色相差很大,这样就非常容易去除。这款软件是由吾爱的@Rongerr使用ChatGPT 4o+ Python开发的,软件是绿色免安装版本。使用方法选择需要去除水印的PDF,点击“选择PDF文件”进行选择......
  • Excel表格如何免费转成PDF的3种方法
    很多时候我们会将各种各样的文档转换成pdf的格式,然后发送给别人,因为pdf格式在阅读上既能保持很好的效果,又不会编辑到里面的内容,那么要怎么excel表格转换成pdf呢?方法一:使用Excel软件自带的“另存为”功能大多数版本的MicrosoftExcel都提供了将文档另存为PDF的功能,这是最简单直接......
  • PPT如何转换PDF格式?3种简单方法
    不知道经常需要进行演讲的小伙伴们,你们平时在制作完PPT文稿后,将文稿发送到其它设备上的时候,会不会出现格式错乱的问题呢?如果会的话也不用太过担心,我们只要将PPT文件转换为PDF格式就可以了,PDF格式的兼容性比较好。那你们知道如何将ppt转换成pdf吗?下面为大家介绍几种PPT转换PDF格式......
  • 藏汉翻译通工具推荐使用《藏文翻译词典》App:藏族文化的掌上宝典,帮助你了解学习藏语反
    如果你正在学习藏语,遇到不同地区的发音不同时,卫藏语、安多语和康巴语,那么你需要一款好用的翻译和语音朗读工具,帮助你掌握藏语。如果你正在用藏文写作文,发现一些词汇不会时,需要使用藏文词典,这个时候,你需要《藏文翻译词典》App。探索藏语的无限魅力,只需一款App。《藏文翻译词典......
  • java将对象中的值赋值为另一个对象--modelMapper
    目标:将两个对象中的非空值赋值给第三个对象,要求第三个对象拥有前面两个对象中的非空值方法:使用modelMapper代码://定义第一个对象Personperson=newPerson();person.setName("1");//定义第二个对象Personperson1=newPerson();person1.setHigh(BigDecimal.ONE);//定......