Unity Android端截图保存并获取展示
截屏保存方法
public static IEnumerator ScreenShot(string filePath, string fileName){yield return new WaitForEndOfFrame();Rect rect = new Rect(0, 0, Screen.width, Screen.height);Texture2D screenShot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);screenShot.ReadPixels(rect, 0, 0);screenShot.Apply();byte[] bytes = screenShot.EncodeToPNG();if (!Directory.Exists(filePath))Directory.CreateDirectory(filePath);File.WriteAllBytes(filePath + "/" + fileName + ".png", bytes);
#if UNITY_EDITORAssetDatabase.SaveAssets();AssetDatabase.Refresh();
#endif}
以日期为名称调用
public void TakeAScreenShot() {string englishTime = DateTime.Now.ToString(); //2000/9/27 1:27:28string chineseTime = string.Empty;string[] split1 = englishTime.Split('/'); //2000 - 9 - 27 1:27:28string[] split2 = split1[2].Split(' '); //27 - 1:27:28string[] split3 = split2[1].Split(':'); //1 - 27 - 28chineseTime += split1[0] + "年" + split1[1] + "月" + split2[0] + "日" + split3[0] + "时" + split3[1] + "分" + split3[2] + "秒"; StartCoroutine(UnityHelper.ScreenShot(UIPanel_ScreenShot.M_Path, chineseTime, false));}
获取截图
private List<Texture2D> m_ScreenShotTextures;private void GetFilesInFolder(string folderPath){if (Directory.Exists(folderPath)){string[] currentFiles = Directory.GetFiles(folderPath);if (currentFiles.Length > 0){m_ScreenShotTextures = new List<Texture2D>();foreach (string filePath in currentFiles){
#if UNITY_EDITORif (filePath.EndsWith("png"))
#endifm_ScreenShotTextures.Add(ReadTexture(filePath));}m_ScreenShotTextures.Reverse();}}SetScreenShot();}private Texture2D ReadTexture(string filePath){Texture2D pathTex = new Texture2D(Screen.width, Screen.height);
#if UNITY_EDITORstring[] split1 = filePath.Split("\\"); //...... - ***.png
#elif UNITY_ANDROIDstring[] split1 = filePath.Split("/"); //...... - ***.png
#endifstring[] split2 = split1[split1.Length - 1].Split("."); // *** - pngpathTex.name = split2[0];byte[] bytes = File.ReadAllBytes(filePath);pathTex.LoadImage(bytes);pathTex.Apply();return pathTex;}
展示:把上面获取的结果进行展示即可
相关文章:
Unity Android端截图保存并获取展示
截屏保存方法 public static IEnumerator ScreenShot(string filePath, string fileName){yield return new WaitForEndOfFrame();Rect rect new Rect(0, 0, Screen.width, Screen.height);Texture2D screenShot new Texture2D(Screen.width, Screen.height, TextureFormat.R…...
linux高级编程——文件IO
linux高级编程——文件IO 标准IO:stdio.h 标准IO:stdio.h IO也就是输入input和输出output; I: 键盘是标准输入设备,默认输入就是指键盘 /dev/input; O: 显示器是标准输出设备,默认输…...
windows C++-在 C++/WinRT 中使用委托处理事件(下)
撤销已注册的委托 当你注册委托时,通常会向你返回一个令牌。 随后,可以使用该令牌撤销委托;这意味着将从事件取消注册委托,再次引发该事件时不会调用该委托。 为简单起见,上面的代码示例都没有介绍如何执行该操作。 …...
【实用工具】Stirling-PDF: 优质开源的PDF处理工具/编辑工具-含入门安装教程
文章目录 项目简介功能展示Page Operations 页面操作Conversion Operations 转换操作Security & Permissions 安全与权限Other Operations 其他业务 如何安装并使用Docker RunDocker Compose 项目简介 这是一款使用 Docker 的基于本地托管网络的强大 PDF 操作工具。它能让…...
opencv 深度图视差图可视化案例
参考:https://www.cnblogs.com/zyly/p/9373991.html(图片这里面下载的) https://blog.csdn.net/He3he3he/article/details/101053457 原理 双目摄像头 视差公式: 三角形对应推算 深度距离转换: 这里d是视差Disparity 代码 下面两种计算视差方法: import os impor…...
Golang | Leetcode Golang题解之第330题按要求补齐数组
题目: 题解: func minPatches(nums []int, n int) (patches int) {for i, x : 0, 1; x < n; {if i < len(nums) && nums[i] < x {x nums[i]i} else {x * 2patches}}return }...
算法训练(leetcode)第五十二天 | Bellman_ford 队列优化算法(SPFA)、BF算法判断负回路、BF之单源有限最短路(有负回路)
刷题记录 94. 城市间货物运输 I-Bellman_ford 队列优化算法(SPFA)95. 城市间货物运输 II-BF算法判断负回路96. 城市间货物运输 III-BF之单源有限最短路(有负回路) 94. 城市间货物运输 I-Bellman_ford 队列优化算法(SPFA) 题目地址…...
SpringBoot中整合RabbitMQ(测试+部署上线 最完整)
一、RabbitMQ安装 由于在测试环境中,我们现在虚拟机上基于docker安装mq docker run \-e RABBITMQ_DEFAULT_USERquick \-e RABBITMQ_DEFAULT_PASS123 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network your-net\-d \r…...
算法板子:线性DP——算出三角形中的最大路径值、求最长上升子序列、求最长公共子序列
目录 一、数字三角形——算出三角形中的最大路径值 二、最长上升子序列——求一个数组中的最长递增子序列 三、最长公共子序列——求两个字符串中的最长公共子序列 一、数字三角形——算出三角形中的最大路径值 #include <iostream> using namespace std;const int N …...
【C++】值传递
函数值传递的特点:值传递过程中即使形参改变也不会改变实参 没有返回值的函数用“ void ”定义 下面是一个实例: #include<iostream> using namespace std;//值传递 //定义函数,实现两个数字进行交换函数//如果函数不需要返回值&…...
工业三防平板助力MES系统打造工厂移动式生产管理
随着工业4.0时代的到来,智能制造、数字化车间等概念层出不穷,生产过程的可视化管理也成为了企业提升效率、优化生产的关键。而工业三防平板,凭借其坚固耐用、功能强大、便携易用等特性,成为了实现生产过程可视化管理的重要利器&am…...
keepalived+nginx实现的简单高可用故障转移
keepalived和nginx和适配 nginx服务停止后对keepalived的影响最近研究了一下keepalived绑定虚拟Ip,然后实现集群的方案,发现实现故障转移的模式,只有在keepalived服务整个挂掉后才能实现虚拟IP的漂移,和实际应用的场景不怎么适配,所以把它和nginx结合在一起实现集群高可用…...
openai api使用
1OpenAI 的 API 介绍 1.1 api分类 常用的 OpenAI Api 接口总共分为 4 类:对话类、私有化模型训练类、通用类、图片 & 音频类,其中对话类与私有化模型训练类是最常用的。 a .对话类 这类是最常用也是最核心的接口,用于人机对话。对话类…...
带你走进haproxy的世界
华子目录 前言什么是负载均衡为什么用haproxy负载均衡负载均衡公司负载均衡类型四层负载均衡七层负载均衡四层和七层的区别 haproxy介绍haproxy的安装与服务信息软件安装haproxy基本配置信息proxies配置socat工具 haproxy算法静态算法动态算法其他算法 高级功能及配置基于cooki…...
STM32--中断使用(超详细!)
STM32中断机制是嵌入式系统设计中一个非常重要的组成部分,它允许单片机在执行程序的过程中,对外部或内部发生的事件做出快速响应。以下是一篇关于STM32中断机制的详细介绍和示例代码,希望能够帮助你更好地理解和应用中断。 一、中断的基本概…...
【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践
本文介绍一个去雾算法ChaIR的使用方法,可以完成图像去雾,也可以用于图像去雨、去噪音等任务。本文不涉及论文原理,只包含源代码的跑通和使用。 先展示一下效果: 原图去雾 论文:Exploring the potential of channel …...
《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统
Title 题目 Screening Outcomes of Mammography with AI in Dense Breasts: A Comparative Study with Supplemental Screening US 《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》 Background 背景 Comparative performance between…...
crm 销售管理系统有哪些?国内外排名前十盘点
本文深入对比的 crm销售管理系统有:1.纷享销客; 2.Zoho CRM; 3.销售易; 4.有赞CRM; 5.Salesforce; 6.HubSpot; 7.简道云CRM; 8.爱客CRM; 9.Apptivo。 如果你正寻找一种方…...
package-lock.json 要提交到git吗?
之前一直没有提交package-lock.json文件到git仓库,直到我打包失败了。。。 我才知道package-lock.json需要提交到git仓库。 npm官网建议将package-lock.json一起提交到代码库中,不要忽略它。 package-lock.json的主要作用是锁定dependencies的版…...
算法学习day32
一、解码方法II(解码方法I的升级版) 在I的基础上增加了*,可以代替1-9中任意一个数字,求解码的方法有多少种 输入:s "*" 输出:9 解释:这一条编码消息可以表示 "1"、"…...
大模型优化:CUDA调度波次(Wave)中的负载均衡与资源利用
1. 理解CUDA调度波次(Wave)的基本概念 当你第一次听到"CUDA调度波次"这个词时,可能会觉得有点抽象。其实它就像餐厅里服务员上菜的过程。想象一下,一个餐厅有4个厨师(相当于GPU的SM),…...
避坑指南:在OpenHarmony ESP32上驱动INMP441麦克风时,I2S库编译报错的排查与解决
深度解析:OpenHarmony ESP32驱动INMP441麦克风的I2S编译问题全攻略 当你在OpenHarmony环境下为ESP32开发板移植INMP441数字麦克风驱动时,是否遇到过I2S库编译报错的困扰?这个问题看似简单,实则涉及编译系统、依赖管理和硬件抽象层…...
AI 术语通俗词典:矩阵乘法
矩阵乘法是线性代数、数据分析、机器学习和人工智能中非常核心的一个术语。它用来描述两组二维数值结构之间的一种特定运算规则。这个运算结果仍然是一个矩阵,但它并不是简单地把对应位置的元素相乘,而是通过“行与列”的组合来生成新的数值。如果说矩阵…...
一文详解RPC,深入浅出从原理到主流框架
什么是RPC? RPC 全称 Remote Procedure Call,即远程过程调用。它的核心目标非常简单:让开发者调用远程机器上的函数/方法,就像调用本地函数一样简单,无需关注底层的网络连接、数据传输、序列化与反序列化等繁琐细节[1]…...
剧本杀app2025推荐,多类型剧本体验与社交互动优势
剧本杀app2025推荐,多类型剧本体验与社交互动优势在当今娱乐多元化的时代,剧本杀凭借其独特的角色扮演和推理乐趣,成为了众多年轻人喜爱的社交娱乐方式。据《2025 年中国剧本杀行业发展报告》显示,2025 年剧本杀市场规模持续增长&…...
云效流水线+K8s实战:Java微服务全自动部署与优化指南(手把手版)
1. 云效流水线入门:从零搭建Java微服务CI/CD管道 第一次接触云效流水线时,我像发现新大陆一样兴奋——原来部署可以这么简单!记得去年团队还在用Jenkins手动打包部署,每次发版都要折腾到凌晨。现在用云效 K8s的组合,我…...
AngularJS Http详解
AngularJS Http详解 引言 AngularJS是一个流行的JavaScript框架,用于构建动态和响应式的web应用。在AngularJS中,HTTP请求是数据交互的重要组成部分。本文将详细介绍AngularJS的Http服务,包括其基本用法、高级特性以及如何处理异步请求。 AngularJS Http服务简介 Angula…...
如何从零搭建Cubli_Mini:开源自平衡机器人完整制作指南
如何从零搭建Cubli_Mini:开源自平衡机器人完整制作指南 【免费下载链接】Cubli_Mini 项目地址: https://gitcode.com/gh_mirrors/cu/Cubli_Mini Cubli_Mini是一款令人惊叹的开源自平衡立方体机器人项目,它通过三个正交安装的飞轮实现姿态控制&am…...
COMSOL热应力仿真新手入门:从零开始设置热膨胀参数(附案例解析)
COMSOL热应力仿真新手入门:从零开始设置热膨胀参数(附案例解析) 热应力仿真是工程设计中不可或缺的一环,尤其在电子设备散热、航空航天材料分析等领域应用广泛。作为COMSOL Multiphysics的初学者,掌握热应力仿真的基础…...
AI Agent 时代工程范式革命全解(非常详细),Harness Engineering 从入门到精通,收藏这一篇就够了!
如果你最近在关注 AI 编程领域,一定刷到过这个词:Harness Engineering。 这个新概念正在以惊人的速度取代 Prompt Engineering 和 Context Engineering,成为 AI Agent 工程优化的正解。 今天这篇文章,我用自己的理解帮你理清楚。…...
