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

Unity 通过代码控制Texture进行缩放

在实际应用开发中,有时候需要通过代码对Texture进行缩放。

有两个方法,一个是通过控制宽高进行缩放,另一个是通过比例值进行等比例缩放。

1、控制宽高的方法:

/// <summary>/// 纹理缩放方法一,指定宽高/// </summary>/// <param name="tex">缩放原始纹理</param>/// <param name="scaledWidth">缩放后的宽度</param>/// <param name="scaledHeight">缩放后的纹理</param>/// <returns></returns>Texture2D ScaleTexture(Texture2D tex,int scaledWidth,int scaledHeight){// 创建缩放后的纹理tex = new Texture2D(scaledWidth, scaledHeight);// 将原始纹理的像素数据拷贝到缩放后的纹理RenderTexture renderTexture = RenderTexture.GetTemporary(scaledWidth, scaledHeight);RenderTexture.active = renderTexture;Graphics.Blit(sourceTexture, renderTexture);// 从RenderTexture中读取像素数据并应用到缩放后的纹理tex.ReadPixels(new Rect(0, 0, scaledWidth, scaledHeight), 0, 0);tex.Apply();// 释放临时的RenderTextureRenderTexture.active = null;RenderTexture.ReleaseTemporary(renderTexture);return tex;}

2、通过比例值进行等比例缩放:

 /// <summary>/// 纹理缩放方法二,等比例/// </summary>/// <param name="tex">原始纹理</param>/// <param name="ratio">比例</param>/// <returns></returns>public Texture2D ScaleTexture(Texture2D tex, float ratio){if (tex == null)return null;if (ratio <= 0)return tex;Color color;int scaledWidth = (int)(tex.width * ratio);int scaledHeight = (int)(tex.height * ratio);Texture2D newTex = new Texture2D(scaledWidth, scaledHeight, TextureFormat.RGB24, false);float newWidthGap = scaledWidth * ratio;float newHieghtGap = scaledHeight * ratio;for (int i = 0; i < newTex.height; i++){for (int j = 0; j < newTex.width; j++){color = tex.GetPixel((int)(j * (1 / ratio)), (int)(i * (1 / ratio)));newTex.SetPixel(j, i, color);}}return newTex;}

http://www.lryc.cn/news/248123.html

相关文章:

  • C语言:输入3个整数,按由小到大的顺序输出(指针)
  • C# 模拟鼠标操作工具类
  • content_script.js、background.js和popup.js之间的通讯
  • python的requests请求参数带files
  • Elk:filebeat 日志收集工具和logstash
  • [设计模式] 常见的设计模式
  • 报错解决:You may need an additional loader to handle the result of these loaders.
  • 配置自动化部署Jenkins和Gitea
  • VSCODE+QEMU+WSL调试RISCV代码(SBI、kernel)
  • 二叉树(判断是否为对称二叉树)
  • STM32开发学习(地址映射)
  • 证明E(X+Y) =E(X) + E(Y)
  • ClickHouse入门手册1.0
  • 10个火爆的设计素材网站推荐
  • SQL注入 - CTF常见题型
  • android keylayout键值适配
  • python读取excel自动化生成sql建表语句和java实体类字段
  • Unity求向量A在平面L上的投影向量
  • 人机交互2——任务型多轮对话的控制和生成
  • 【数据结构】八大排序 (三)
  • Redis 命令处理过程
  • python爬虫进阶教程之如何正确的使用cookie
  • 【hacker送书第4期】推荐4本Java必读书籍(各送一本)
  • [密码学]DES
  • 15个超级实用的Python操作,肯定有你意想不到的!
  • GitHub上8个强烈推荐的 Python 项目
  • 什么是依赖倒置原则
  • 异常数据检测 | Python实现oneclassSVM模型异常数据检测
  • using meta-SQL 使用元SQL (3)
  • Spinnaker 基于 docker registry 触发部署