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

Unity-微信截图功能简单复刻-04修改纹理

思路

创建全屏大小纹理,类型为TextureFormat.RGBA32。
创建纹理数组,大小为屏幕大小的4倍。
修改纹理数组数据,纹理应用修改后的数据。

示例

using UnityEngine;
using UnityEngine.UI;
public class TestTextureChange : MonoBehaviour
{[SerializeField] RawImage image;Texture2D texture;byte[] textureData;private void Awake(){texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGBA32, false);texture.filterMode = FilterMode.Point;texture.wrapMode = TextureWrapMode.Clamp;image.texture = texture;textureData = new byte[Screen.width * Screen.height * 4];texture.LoadRawTextureData(textureData);texture.Apply(false);}private void Update(){if (Input.GetMouseButtonDown(0)){       var xLength = Random.Range(0, Screen.width);var yLength = Random.Range(0, Screen.height);Color color = Color.white;color.r = Random.Range(0f, 1f);color.g = Random.Range(0f, 1f);color.b = Random.Range(0f, 1f);FillColor(xLength, yLength, color);}if (Input.GetMouseButtonUp(0))FillColor(Screen.width, Screen.height, Color.clear);}void FillColor(int x, int y, Color32 color){for (int i = 0; i < x; i++){for (int j = 0; j < y; j++)SetPixelColor(i, j, color);}texture.LoadRawTextureData(textureData);texture.Apply(false);}void SetPixelColor(int x, int y, Color32 color){if (x < 0 || y < 0 || x >= texture.width || y >= texture.height){return;}else{int index = (texture.width * y + x) * 4;textureData[index++] = color.r;textureData[index++] = color.g;textureData[index++] = color.b;textureData[index] = color.a;}}
}

层级结构

在这里插入图片描述

运行结果

在这里插入图片描述
按下鼠标左键,显示一个纯色矩形。
松开鼠标左键,清除纯色矩形。

知识

TextureFormat.RGBA32

橡皮檫制作思路

使用透明颜色,修改纹理数组。

http://www.xdnf.cn/news/901.html

相关文章:

  • 上海共荣应用营养研究所SAT-3D膳食诊断:从5岁到60岁,你的饮食习惯决定寿命长短
  • 24.中医知识问答删除历史对话功能前端代码实现
  • 搭建哨兵架构
  • 读文献先读图:火山图怎么看?
  • SATA——PHY层状态机
  • 工作记录7
  • 详解.vscode 下的json .vscode文件夹下各个文件的作用
  • STM32 HAL库 FreeRTOS 软件定时器的使用
  • 新书速览|OpenCV计算机视觉开发实践:基于Qt C++
  • 百度地图MCP:AI助手的地理智能跃升——让位置服务“触手可及”
  • SBTI科学碳目标认证有什么要求?SBTI认证的好处?
  • 【英语语法】词法---连词
  • lmgrd web api调用
  • 【英语语法】词法---介词
  • 数据结构第六章(五)-拓扑排序、关键路径
  • Mysql卸载
  • 电力MOSFET漏源过电压与窄脉冲自保护驱动电路
  • TM1640学习手册及示例代码
  • 博客系统-邮件发送-nginx-服务部署
  • 《深入解析C++中的explicit关键字:防止隐式转换的利器》
  • word显示段落标记符(¶)而不是回车符
  • spring boot使用Scheduling实现动态增删启停定时任务
  • 【sylar-webserver】重构日志系统
  • 数据仓库 vs 数据湖:架构、应用场景与技术差异全解析
  • 13.QT-DateTime Edit|Dial|Slider|日期计算器|调整窗口透明度|调整窗口大小|自定义快捷键(C++)
  • 中通 Redis 集群从 VM 迁移至 PVE:技术差异、PVE 优劣势及应用场景深度解析
  • 深入理解HotSpot JVM 基本原理
  • C++学习之游戏服务器开发十一DOCKER的基本使用
  • 【数学建模】随机森林算法详解:原理、优缺点及应用
  • 【Python 02 】数值类型、字符串、格式化输出