unity(WebGL) 把截图保存下载到本地

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、编写jslib
  • 二、c#代码
    • 1.引入插件
    • 2.测试调用
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:
尊重原著:
原文链接: https://blog.csdn.net/Wrinkle2017/article/details/117660124

以下方法都可以搭配本文使用:

截图的方法:
链接: unity 自由框选截图(两种方法,亲测有效)

模型生成PNG图片:
链接: unity 模型生成PNG图片并导出(可以任意控制方向和大小,本文提供三种方案)

截图拼接,下载PDF:
链接: unity(WebGL) 截图拼接并保存本地,下载PDF

一、编写jslib

新建一个文本复制一下代码,并修改后缀(.jslib):
把这个jslib丢到Plugins目录下,这样它就会作为插件引入Unity
ImageDownloader.jslib

//调用浏览器的下载
var ImageDownloaderPlugin = {ImageDownloader: function (str, fn) {console.log("start jslib download");var msg = Pointer_stringify(str);var fname = Pointer_stringify(fn);var contentType = 'image/jpeg';function fixBinary(bin) {var length = bin.length;var buf = new ArrayBuffer(length);var arr = new Uint8Array(buf);for (var i = 0; i < length; i++) {arr[i] = bin.charCodeAt(i);}return buf;}//atob解码使用base64编码的字符串var binary = fixBinary(atob(msg));var data = new Blob([binary], { type: contentType });//创建一个html dom用于触发blob下载var link = document.createElement('a');link.download = fname;link.innerHTML = 'DownloadFile';link.setAttribute('id', 'ImageDownloaderLink');link.href = window.URL.createObjectURL(data);link.onclick = function () {var child = document.getElementById('ImageDownloaderLink');child.parentNode.removeChild(child);};link.style.display = 'none';document.body.appendChild(link);link.click();window.URL.revokeObjectURL(link.href);}
};
//并入Unity中,官方写法。
mergeInto(LibraryManager.library, ImageDownloaderPlugin)

二、c#代码

1.引入插件

[DllImport("__Internal")]
private static extern void ImageDownloader(string str, string fn);
public void DownloadImage(byte[] imageData, string imageFileName = "newpic")
{if (imageData != null) {Debug.Log("Downloading..." + imageFileName);ImageDownloader(System.Convert.ToBase64String(imageData), imageFileName);}
}

2.测试调用

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestJPEGDownload : MonoBehaviour
{public Sprite sprite;public UnityEngine.UI.Button button;private void Start(){button.onClick.AddListener(this.onButtonClick);}private void onButtonClick(){byte[] photoByte = getImageSprite();//获取jpeg图像的字节流if (photoByte != null) {DownloadImage(photoByte, sprite.name + ".jpg");}else{Debug.LogError("不得了");}}private byte[] getImageSprite(){if (sprite) {return sprite.texture.EncodeToJPG();}return null;}
}

总结

感谢https://blog.csdn.net/Wrinkle2017/article/details/117660124 大神的无私贡献!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django从入门到放弃

Django从入门到放弃 Django最初被设计用于具有快速开发需求的新闻类站点&#xff0c;目的是实现简单快捷的网站开发。 安装Django 使用anaconda创建环境 conda create -n django_env python3.10 conda activate django_env使用pip安装django python -m pip install Django查…

Qt|开发程序如何自适应屏幕的简单方法

前提 在早几年前&#xff0c;PC的显示屏幕几乎是1920*1080、1680*1050这两种规格&#xff0c;对于PC的window界面开发人员来说&#xff0c;页面也都是按照屏幕大小进行设计的。但是这种根据屏幕大小进行界面设计的方式已经受到了很大限制&#xff01; 近年来&#xff0c;显示…

华为云幻兽帕鲁服务器搭建教程

华为云作为国内领先的云服务提供商&#xff0c;提供了丰富的云服务产品和解决方案&#xff0c;本文将介绍基于华为云服务器搭建幻兽帕鲁服务器&#xff0c;助力大家快速部署属于自己的游戏联机服务器&#xff01; 第一步&#xff1a;购买服务器 华为云推出了游戏联机服务专用便…

Elasticsearch Windows版安装配置

Elasticsearch简介 Elasticsearch是一个开源的搜索文献的引擎&#xff0c;大概含义就是你通过Rest请求告诉它关键字&#xff0c;他给你返回对应的内容&#xff0c;就这么简单。 Elasticsearch封装了Lucene&#xff0c;Lucene是apache软件基金会一个开放源代码的全文检索引擎工…

Spark入门01-Spark简介

1 Spark是什么 Spark是用于大规模数据处理的统一分析引擎。对任意类型的数据进行自定义计算。 可以计算&#xff1a;结构化、非结构化&#xff0c;半结构化的数据结构&#xff0c;支持使用Python&#xff0c;Java&#xff0c;Scala、Sql语言开发应用程序计算数据。 计算框架&a…

一文掌握SpringBoot注解之@Configuration知识文集(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

STM32G4 系列命名规则

STM32G4产品线 基础型系列STM32G4x1 具有入门级模拟外设配置&#xff0c;单存储区Flash&#xff0c;支持的Flash存储器容量范围从32到512KB。 增强型系列STM32G4x3 与基本型器件相比具有更多数量的模拟外设&#xff0c;以及双存储区Flash&#xff0c;Flash存储器容量也提高…

Docker 入门第一篇 安装Docker Desktop并结合Springboot在Idea中应用

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 往期专栏回顾 专栏描述…

虚拟机 网络模式

VMnet8默认不能访问VMnet1&#xff0c;但在实验中网络模式为NAT模式的虚拟机可以ping通网络模式为仅主机vmnet1的虚拟机&#xff0c;仅主机vmnet1的虚拟机 不可以ping通 网络模式为NAT模式的虚拟机 如果在虚拟机中没有进行任何额外的配置&#xff0c;但是 VMnet8&#xff08;N…

Java技术栈 —— Servlet和Tomcat

一、Servlet 先理解Servlet。 Servlet 是一种在 Java 编程语言中用于创建动态 Web 应用程序的技术。 它是 Java Servlet API 的一部分&#xff0c;运行在 Web 服务器上&#xff0c;用于处理客户端&#xff08;通常是浏览器&#xff09;发送的 HTTP 请求。 Servlet 可以理解为是…

ISCTF wp

web 圣杯战争 题目源码 <?php highlight_file(__FILE__); error_reporting(0);class artifact{public $excalibuer;public $arrow;public function __toString(){echo "为Saber选择了对的武器!<br>";return $this->excalibuer->arrow;} }class pre…

web项目部署,一篇就搞定!

web部署的方式有很多&#xff0c;根据开发方式不同&#xff0c;部署方式也不同。最通用是docker部署&#xff0c;这个想必大家都熟悉。我们今天说另外一种。 部署过程 1、验证Jdk是否安装成功 2、验证Tomcat是否安装成功 3、验证Navicat 是否能连上数据库 4、创建数据库并导入…

JVM篇----第十八篇

系列文章目录 文章目录 系列文章目录前言一、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?二、对象分配规则三、描述一下JVM加载class文件的原理机制?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到…

【网络安全】2024年暗网威胁分析及发展预测

暗网因其非法活动而臭名昭著&#xff0c;现已发展成为一个用于各种非法目的的地下网络市场。 它是网络犯罪分子的中心&#xff0c;为被盗数据交易、黑客服务和邪恶活动合作提供了机会。为了帮助企业组织更好地了解暗网发展形势&#xff0c;近日&#xff0c;卡巴斯基的安全研究…

FCIS 2023:洞悉网络安全新前沿,引领未来安全创新狂潮

在数字化浪潮席卷全球的今天&#xff0c;网络安全问题愈发凸显其重要性。 FCIS 2023网络安全创新大会作为业界瞩目的盛会&#xff0c;不仅汇聚了国际顶尖的网络安全专家&#xff0c;更展示了最前沿的安全技术与研究成果。那么&#xff0c;参与这场大会&#xff0c;我们究竟能学…

2023年度统计DDoS攻击峰值暴增,如何选择合适的防护方式将为2024年的重点(DexunCloud)

进入 2024 年&#xff0c;发布了最新的 2023 年第三、四季度&#xff08;Q3-Q4&#xff09; DDoS 攻击趋势报告&#xff0c;指出 DDoS 攻击的规模和复杂性都有了惊人增长。 DexunCloud发现过去三年&#xff0c;DDoS 峰值攻击流量每年的增幅都超过了 100%&#xff0c;2021 年 D…

Sui主网升级至V1.17.3版本

Sui主网现已升级至V1.17.3版本&#xff0c;同时Sui协议升级至35版本。 其他升级要点如下所示&#xff1a; #15790 增加了一个选项&#xff0c;用于在开发审查时返回原始交易数据。 #15690 引入了对传统数据库快照时无需许可下载的支持。一个示例用法是sui-tool download-d…

从零开始学Linux之gcc命令

首先我们需要知道有两种编程语言 编译型语言&#xff1a;要求必须提前将所有源代码一次性转换成二进制指令&#xff0c;也就是生成一个可执行程序&#xff0c;例如C、C、go语言、汇编语言等&#xff0c;使用的转换工具称为编译器。 解释型语言&#xff1a;一边执行一边转换&a…

【2024全网最详细】Google 搜索命令终极指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 你是否尝试过使用 Google 搜索作为免费的 SEO …

结构体的学习

结构体与共用体&#xff0c;枚举 1.数据类型复习&#xff1a; 2结构体. eg&#xff1b;统计全校同学信息 需要记录的点--- 姓名&#xff0c;班级&#xff0c;性别&#xff0c;成绩&#xff0c;年龄 统计名字&#xff1a;char s[ ] [ 100 ] { "Tmo" } …