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

简单游戏截图_可控截取内容1

一个需求

我需要在场景中截取不同层级的截图(如只截模型或只截UI或只截外部相加看到的画面 或全都截或和Shader配合呈现人眼夜视仪热成像的画面切换)
将截图排到列表中,在场景UI中展示出来

如何做

  1. 相机要能够看到不同的画面
  2. 将当前帧画面存储下来
  3. 将存储的画面展示出来

实现时需要掌握的知识点

相机要能够看到不同的画面

  1. 将不同的游戏对象分类成不同的Layer
  2. 需要单独设置一个相机x与原相机保持一致,唯独更改它的Rendering->CullingMask 规定它可以看什么不看什么,还有Rendering->Priority层级要高于原相机 (还要关闭它的AudioListener,防止重复)
  3. 通常我们要关掉,只在截图的时候打开它
动态控制摄像机Rendering->CullingMask的方法
    
publicCameracameraToChange;//控制的相机publicLayerMasknewCullingLayers;//选择LayersvoidSetCullingMask(){//显示选择的LayerscameraToChange.cullingMask =newCullingLayers;}voidToggleCullingMask(){// 取反剔除层cameraToChange.cullingMask =~cameraToChange.cullingMask;}voidDisableAllLayers(){//全部剔除cameraToChange.cullingMask =0;}

将画面存储下来

需要输入宽度和高度用于创建Texture2D和截图内容用,有两种方式意思直接输入屏幕存储或创建一个image,常用这个image宽高
    
intwidth =Screen.width;intheight =Screen.height;publicRectTransformUIRect;{//计算截图的宽度和高度intwidth =(int)(UIRect.rect.width);intheight =(int)(UIRect.rect.height);//创建一个新的Texture2D对象,宽度和高度与截图的宽度和高度匹配Texture2Dtex =newTexture2D(width,height,TextureFormat.RGB24,false);}
储存方法
事先要创建出StreamingAssets文件夹
    
publicRectTransformUIRect;publicRawImagerawImage;// 添加一个RawImage对象voidUpdate(){if(Input.GetKeyDown(KeyCode.Q)){stringfileName =Application.dataPath +"/StreamingAssets/"+"12.png";//系统不识别标点符号,但支持中文IEnumeratorcoroutine =CaptureByUI(UIRect,fileName);StartCoroutine(coroutine);}}publicIEnumeratorCaptureByUI(RectTransformUIRect,stringmFileName){yieldreturnnewWaitForEndOfFrame();//等待当前帧的UI渲染完成//计算截图的宽度和高度intwidth =(int)(UIRect.rect.width);intheight =(int)(UIRect.rect.height);//创建一个新的Texture2D对象,宽度和高度与截图的宽度和高度匹配Texture2Dtex =newTexture2D(width,height,TextureFormat.RGB24,false);//计算从屏幕上读取像素的起始位置floatleftBtmX =UIRect.transform.position.x +UIRect.rect.xMin;floatleftBtmY =UIRect.transform.position.y +UIRect.rect.yMin;//使用tex.ReadPixels()函数从屏幕上读取指定区域的像素,并存储到Texture2D中。tex.ReadPixels(newRect(leftBtmX,leftBtmY,width,height),0,0);//执行读取操作,将修改应用到Texture2D中tex.Apply();//将Texture2D编码为PNG格式的字节数组byte[]bytes =tex.EncodeToPNG();//将字节数组保存为PNG图片文件System.IO.File.WriteAllBytes(mFileName,bytes);}

将存储的画面展示出来

到UnityWebRequest 从给的路径里拿数据
    
publicRawImagerawImage;publicstringimageFileName;voidUpdate(){if(Input.GetKeyDown(KeyCode.W)){// 拼接图片路径stringimagePath =System.IO.Path.Combine(Application.streamingAssetsPath,imageFileName);// 开始协程加载图片StartCoroutine(LoadImage(imagePath));}}IEnumeratorLoadImage(stringpath){// 发送请求获取图片UnityWebRequestwww =UnityWebRequestTexture.GetTexture(path);yieldreturnwww.SendWebRequest();// 检查请求是否成功if(www.result ==UnityWebRequest.Result.Success){// 获取加载的TextureTexture2Dtexture =DownloadHandlerTexture.GetContent(www);// 将加载的Texture赋值给RawImage的texture属性rawImage.texture =texture;// 调整RawImage的大小以适应图片的长宽比例rawImage.SetNativeSize();}else{Debug.LogError("Failed to load image: "+www.error);}}

相关文章:

简单游戏截图_可控截取内容1

一个需求 我需要在场景中截取不同层级的截图(如只截模型或只截UI或只截外部相加看到的画面 或全都截或和Shader配合呈现人眼夜视仪热成像的画面切换) 将截图排到列表中,在场景UI中展示出来 如何做 相机要能够看到不同的画面 将当前帧画面存储下来 将存储的画面展示出…...

Vue3_02 创建Vue3.0工程

1.使用 vue-cli 创建 ## 查看 vue/cli 版本,确保 vue/cli 版本在4.5.0以上 vue -V 或 vue --version## 安装或升级你的 vue/cli npm install -g vue/cli## 创建 vue create vue_test## 启动 cd vue-test npm run serve 2.使用 vite 创建 什么是vite?——新一代…...

Arduino ESP 8266 ESPAsyncWebServer AsyncCallbackJsonWebHandler

Arduino-ESP 8266 踩坑(一) ESPAsyncWebServer AsyncCallbackJsonWebHandler 在使用 ESPAsyncWebServer 时 由于我想用 asyncWebServer 通过 application/json POST 请求拿数据, 就翻看了 ESPAsyncWebServer 的 git 文档, 他是这样说的 : //JSON body handling with ArduinoJ…...

Source Insight_突出显示对选定字符的引用

1、突出显示对选定字符的引用 在Source Insight中,当我们选中一个函数或者变量的时候,关于它的所有引用地方都高亮显示,想要实现效果如下。 2、配置方法 (1)点击"Options"→“File Type options...” (2)勾选“Highlight referenc…...

高等数学上册 第五章 定积分 知识点总结

定积分 定积分的性质&#xff1a; &#xff08; 1 &#xff09; ∫ a b [ α f ( x ) β g ( x ) ] d x α ∫ a b f ( x ) d x β ∫ a b g ( x ) d x &#xff08; 2 &#xff09;设 a < c < b &#xff0c;则 ∫ a b f ( x ) d x ∫ a c f ( x ) d x ∫ c b f ( …...

【无标题】uniapp引入萤石云 真机无法运行 踩坑集合

Uniapp 接入萤石云 踩坑 1.先用了 UIKit Javascript 就是在 pc端 那套流程 npm install ezuikit-jsimport EZUIKit from ezuikit-js;这套流程貌似只适用于pc端&#xff0c;我在接入uniapp的时候没看官网 以为都是一套流程&#xff0c;然后就在uniapp中也来了这一套&#xff0…...

python函数

目录 函数基本语法 函数定义 函数调用 形式参数和实际参数 None类型 None主要作用 函数的说明文档 语法 变量的作用域 变量分类 global关键字 不加global关键字 加global关键字 函数的多返回值 多返回值写法 函数的四种传参方式 位置参数 关键字参数 缺省参…...

【Linux】进程间通信——system V共享内存

目录 写在前面的话 System V共享内存原理 System V共享内存的建立 代码实现System V共享内存 创建共享内存shmget() ftok() 删除共享内存shmctl() 挂接共享内存shmat() 取消挂接共享内存shmdt() 整体通信流程的实现 写在前面的话 上一章我们讲了进程间通信的第一种方式…...

【数据结构】快速排序

快速排序是一种高效的排序算法&#xff0c;其基本思想是分治法。它将一个大问题分解成若干个小问题进行解决&#xff0c;最后将这些解合并得到最终结果。 快速排序的主要思路如下&#xff1a; 选择一个基准元素&#xff1a;从待排序的数组中选择一个元素作为基准&#xff08;…...

人机融合智能中的事实与价值

在人机融合智能中&#xff0c;事实和价值分别扮演着不同的角色和功能。 事实是客观存在的真实描述&#xff0c;可以通过数据、观测和验证等方式获取。在人机融合智能中&#xff0c;人工智能通过处理和分析大量的数据来提供客观事实的支持。例如&#xff0c;在搜索引擎中&#x…...

JVM | 从类加载到JVM内存结构

引言 我在上篇文章&#xff1a;JVM | 基于类加载的一次完全实践 中为你讲解如何请“建筑工人”来做一些定制化的工作。但是&#xff0c;大型的Java应用程序时&#xff0c;材料&#xff08;类&#xff09;何止数万&#xff0c;我们直接堆放在工地上&#xff08;JVM&#xff09;…...

Golang之路---04 并发编程——WaitGroup

WaitGroup 为了保证 main goroutine 在所有的 goroutine 都执行完毕后再退出&#xff0c;前面使用了 time.Sleep 这种简单的方式。 由于写的 demo 都是比较简单的&#xff0c; sleep 个 1 秒&#xff0c;我们主观上认为是够用的。 但在实际开发中&#xff0c;开发人员是无法…...

React(4)

1.属性&#xff08;props&#xff09;初始 状态state都是组件内部写的&#xff0c;也就是A组件内的state就只能A组件里面用&#xff0c;其他组件复用不了。因此属性props就可以。 比如一个导航栏&#xff0c;首页有&#xff0c;购物车有&#xff0c;我的有&#xff0c;他们三个…...

STM32 CubeMX USB_(HID 鼠标和键盘)

STM32 CubeMX STM32 CubeMX USB_HID&#xff08;HID 鼠标和键盘&#xff09; STM32 CubeMX前言 《鼠标小节》一、STM32 CubeMX 设置USB时钟设置USB使能UBS功能选择 二、代码部分添加代码鼠标发送给PC的数据解析实验效果 《键盘小节》STM32 CubeMX 设置&#xff08;同上&#xf…...

[PM]敏捷开发之Scrum总结

在项目管理中&#xff0c;不少企业和项目团队也发现传统的项目管理模式已不能很好地适应今天的项目环境的要求。因此&#xff0c;敏捷项目管理应运而生&#xff0c;本文将为大家介绍Scrum敏捷项目管理以及应用方法。 什么是Scrum敏捷项目管理 敏捷项目管理作为新兴的项目管理模…...

大数据Flink(五十七):Yarn集群环境(生产推荐)

文章目录 Yarn集群环境(生产推荐) 一、准备工作...

web集群学习:源码安装nginx配置启动服务脚本

1、源码安装nginx&#xff0c;并提供服务脚本。 1、源码安装会有一些软件依赖 &#xff08;1&#xff09;检查并安装 Nginx 基础依赖包 pcre-devel 、openssl-devel # rpm -qa | egrep pcre-devel | openssl-devel&#xff08;2&#xff09;安装 Nginx 所需的 pcre 库 正则支…...

LNMP

lNmp安装&#xff1a; 一、LNMP LNMP架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c; 能够提供动态Web站点服务及其应用开发环境。LNMP是一个缩写词&#xff0c;具体包括Linux操作系统、nginx网站服务器、MySQL数据库服务…...

Python网络爬虫在信息采集中的应用及教程

Python网络爬虫在信息采集中的应用与法律警告 摘要 随着互联网的发展&#xff0c;我们每天都面临着海量的信息。这些信息蕴含着无尽的价值&#xff0c;而要从中获取有用的数据&#xff0c;网络爬虫就成了我们的得力助手。Python作为一门简单而又强大的编程语言&#xff0c;被…...

云主机测试Flink磁盘满问题解决

问题描述&#xff1a; 使用云主机测试Flink时&#xff0c;根目录满了。 经排查发现运行Flink任务后根目录空间一直在减少&#xff0c;最后定位持续增加的目录是/tmp目录 解决方法&#xff1a; 修改Flink配置使用一个相对较大的磁盘目录做为Flink运行时目录 # Override the…...

解密冰蝎和蚁剑:在CTF流量分析中如何识别和还原WebShell攻击(含AES/Base64解密实操)

解密冰蝎与蚁剑&#xff1a;CTF流量分析中的WebShell识别与解密实战 在CTF竞赛和安全分析领域&#xff0c;WebShell流量分析一直是让许多选手头疼的高阶挑战。特别是当面对冰蝎&#xff08;Behinder&#xff09;、蚁剑&#xff08;AntSword&#xff09;这类采用强加密通信的Web…...

别再只用ARIMA了!用Python+statsmodels搞定SARIMA预测电商销量(附完整代码)

电商销量预测实战&#xff1a;用PythonSARIMA破解季节性销售波动 电商销量预测的痛点与SARIMA的破局之道 每逢大促季节&#xff0c;电商运营团队总会陷入两难困境&#xff1a;备货不足错失销售良机&#xff0c;库存积压又导致资金周转困难。传统ARIMA模型在预测日常销量时表现尚…...

如何通过QuickLookVideo实现Mac视频预览效率革命:终极工具深度解析

如何通过QuickLookVideo实现Mac视频预览效率革命&#xff1a;终极工具深度解析 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: ht…...

无王无帝定乾坤,来自田间第一人 海棠山铁哥持道定天下

无王无帝定乾坤 ——来自田间第一人千古以来&#xff0c;世人皆认为天下安定、乾坤稳固&#xff0c;必靠帝王集权、朝堂号令、强权治世。 王朝兴替往复&#xff0c;霸业起落无常&#xff0c;靠权柄维系的盛世终难长久&#xff0c;靠杀伐平定的世道终存隐患。 权力会更迭&#x…...

BOTW-Save-Editor-GUI 完整技术指南:Nintendo Switch 塞尔达传说存档编辑终极方案

BOTW-Save-Editor-GUI 完整技术指南&#xff1a;Nintendo Switch 塞尔达传说存档编辑终极方案 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI BOTW-Save-Editor-GU…...

Linux字符设备驱动框架:基于pinctrl/gpio子系统的GPIO控制实践

1. 项目概述&#xff1a;从“点灯”到“驱动框架”的认知跃迁 在嵌入式Linux开发领域&#xff0c;点亮一个LED灯&#xff0c;常常是工程师们的“Hello World”。新手阶段&#xff0c;我们可能直接在驱动代码里写死寄存器地址&#xff0c;用 ioremap 和 writel 函数进行操控…...

【免费下载】 MobaXterm 汉化版资源文件下载

MobaXterm 汉化版资源文件下载 资源文件介绍 文件名: MobaXterm_CHS.zip 文件类型: 压缩包 文件描述: 该资源文件为 MobaXterm 的汉化版本&#xff0c;提供了增强型终端、X 服务器和 Unix 命令集&#xff08;GNU/Cygwin&#xff09;工具箱的功能。 MobaXterm 简介 MobaXterm 又…...

VSCode里PlatformIO插件抽风?手把手教你彻底卸载重装PIO(解决创建工程失败)

VSCode PlatformIO插件异常终极解决手册&#xff1a;从崩溃到重生的全流程指南 当你在VSCode中满怀期待地点击"New Project"按钮&#xff0c;却看到那个刺眼的红色错误提示时&#xff0c;那种挫败感每个开发者都懂。PlatformIO作为物联网开发的瑞士军刀&#xff0c;一…...

Linux编译OpenSSL 3.0.1时,那个烦人的‘Can‘t locate IPC/Cmd.pm’错误,我是这样解决的

解决Linux编译OpenSSL 3.0.1时的Perl模块依赖问题 在Linux环境下从源码编译安装OpenSSL时&#xff0c;开发者常会遇到各种依赖问题&#xff0c;其中Cant locate IPC/Cmd.pm错误尤为常见。这个错误看似简单&#xff0c;却可能让不熟悉Perl模块管理机制的用户陷入困境。本文将深入…...

开源阅读鸿蒙版:打造您的个性化无广告数字图书馆

开源阅读鸿蒙版&#xff1a;打造您的个性化无广告数字图书馆 【免费下载链接】legado-Harmony 开源阅读鸿蒙版仓库 项目地址: https://gitcode.com/gh_mirrors/le/legado-Harmony legado-Harmony是一款专为鸿蒙系统设计的开源电子书阅读器&#xff0c;它为您提供纯净的阅…...