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

将材质球中的纹理属性对应的贴图保存至本地

 通过Texture2D的EncodeToPNG方法将纹理转为图片形式

material.GetTexture方法通过属性名获取纹理贴图

material.SetTexture方法通过属性名设置纹理贴图

属性名可在shader代码中查看

using UnityEngine;
using System.IO;public class TextureSaver : MonoBehaviour
{public Material targetMaterial;public string textureName = "_MainTex"; // 可自定义材质属性名public void SaveMaterialTexture(){if (targetMaterial == null){Debug.LogError("未指定目标材质球!");return;}Texture mainTex = targetMaterial.GetTexture(textureName);if (mainTex == null){Debug.LogError($"材质中未找到纹理属性:{textureName}");return;}if (mainTex is Texture2D){SaveTexture2D(mainTex as Texture2D);}else if (mainTex is RenderTexture){SaveRenderTexture(mainTex as RenderTexture);}else{Debug.LogError("不支持此纹理类型:" + mainTex.GetType());}}void SaveTexture2D(Texture2D texture){if (!texture.isReadable){Debug.LogError("纹理不可读!请在导入设置中启用 Read/Write Enabled");return;}byte[] bytes = texture.EncodeToPNG();string filePath = Path.Combine(Application.persistentDataPath, "SavedTexture.png");File.WriteAllBytes(filePath, bytes);Debug.Log("保存成功:" + filePath);}void SaveRenderTexture(RenderTexture rt){Texture2D tex2D = new Texture2D(rt.width, rt.height, TextureFormat.RGBA32, false);RenderTexture.active = rt;tex2D.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);tex2D.Apply();RenderTexture.active = null;SaveTexture2D(tex2D);Destroy(tex2D);}
}

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

相关文章:

  • Linux应用开发之网络套接字编程
  • 实现RabbitMQ多节点集群搭建
  • GLIDE论文阅读笔记与DDPM(Diffusion model)的原理推导
  • 机器学习——放回抽样
  • 前端内存泄漏:原理、检测与防范实践
  • Go的隐式接口机制
  • UE音频中间件wwise插件
  • C++.cstring string
  • Spring AOP 和 AspectJ 有什么区别
  • 报表/报告组件(二)-实例与实现解释
  • linux的实时性
  • Opencv4 c++ 自用笔记 04 图像滤波与边缘检测
  • 流媒体基础解析:音视频封装格式与传输协议
  • 一个html实现数据库自定义查询
  • OCC笔记:TopoDS_Edge上是否一定存在Geom_Curve
  • Python aiohttp 全面指南:异步HTTP客户端/服务器框架
  • 更新已打包好的 Spring Boot JAR 文件中的 class 文件
  • 容器(如 Docker)中,通常不建议运行多个进程或要求进程必须运行在前台
  • conda管理环境指令综合(随时更新)
  • 从Java的JDK源码中学设计模式之装饰器模式
  • 鸿蒙电脑会在国内逐渐取代windows电脑吗?
  • 持续领跑中国异地组网路由器市场,贝锐蒲公英再次登顶销量榜首
  • Spring AI 系列3: Promt提示词
  • Nginx 的配置文件
  • Redis:安装与常用命令
  • [原创](Windows使用技巧): Windwos11如何设置局域网共享访问? (多图详解)
  • Mac 芯片系列 安装cocoapod 教程
  • 智启未来:AI重构制造业供应链的五大革命性突破
  • Linux进程间通信----简易进程池实现
  • 解锁Java多级缓存:性能飞升的秘密武器