UnityEditor代码分享导出材质贴图和Mesh本体
运行时可导出
可导出多个材质
导出Mesh_0到Assets/目录下
#if UNITY_EDITOR
using UnityEditor;
[CustomEditor(typeof(ComperhenceMeshMonoViewer))]
public class ComperhenceMeshMonoViewerEditor : Editor
{public override void OnInspectorGUI(){base.OnInspectorGUI();if (GUILayout.Button("导出 Mesh & Mat")){string folderPath = EditorUtility.SaveFolderPanel("", "选择目录", "");if (string.IsNullOrEmpty(folderPath)) {return;}ComperhenceMeshMonoViewer _target = target as ComperhenceMeshMonoViewer;//Material mat = _target.GetComponent<Renderer>().sharedMaterial;List<string> lstNameIdentity = new List<string>();Material[] mats = _target.GetComponent<Renderer>().sharedMaterials;int cursor = 0;foreach (var mat in mats){var texs = GetCertainMaterialTextures(mat);string go_name = _target.gameObject.name;foreach (var tex in texs){if (tex == null) continue;//string saveRelativePath = tex;//string frmPath = Application.dataPath + "/../" + saveRelativePath;//GameUtility.SafeCopyFile(frmPath, folderPath + "/" + saveRelativePath);Texture2D tt = TextureUtils.TextureToTexture2D(tex);string tex_name = tex.name;if (lstNameIdentity.Contains(tex_name) == false){lstNameIdentity.Add(tex_name);}else{tex_name = tex.name + "_" + cursor;}GameUtility.SaveTexture(string.Format("{0}/{1}/{2}.png", folderPath, go_name, tex.name), tt);cursor++;}GameUtility.SaveConfig(string.Format("{0}/{1}/{2}", folderPath, go_name, mat.shader.name), "");}}}public Texture[] GetCertainMaterialTextures(Material _mat){List<Texture> results = new List<Texture>();Shader shader = _mat.shader;for (int i = 0; i < ShaderUtil.GetPropertyCount(shader); ++i){if (ShaderUtil.GetPropertyType(shader, i) == ShaderUtil.ShaderPropertyType.TexEnv){string propertyName = ShaderUtil.GetPropertyName(shader, i);Texture tex = _mat.GetTexture(propertyName);//string texPath = AssetDatabase.GetAssetPath(tex.GetInstanceID());//results.Add(texPath);results.Add(tex);}}return results.ToArray();}
}
#endif
(还缺一个 GameUtility 类,保存文件用,之后再补上吧)
UnityEditor代码分享导出材质贴图和Mesh本体相关推荐
- Blender材质贴图入门图文教程
推荐:将 NSDT场景编辑器 加入你的3D开发工具链 大家好,今天跟大家分享Blender材质贴图入门图文教程,一套blender的PBR材质包,和HDRI环境纹理贴图,在文末领取,希望能助到大家更高 ...
- 代码分享:面波数据快速成图
代码分享:面波数据快速成图 前言 目前,物探数据主要用surfer软件成图,surfer软件具有强大的插值和绘图功能,成图比较美观.但是,生产过程中大量的物探数据,依靠excel和surfer来成图耗 ...
- python画球轨迹图_python绘制铅球的运行轨迹代码分享
我们按照面向过程程序设计的思想,使用python编写了程序,追踪铅球在运行过程中的位置信息.下面,修改程序代码,导入turtle模块,将铅球的运行轨迹绘制出来. python3代码如下: from m ...
- python turtle画画 30排以内_Python竟能画这么漂亮的花,帅呆了(代码分享)
阅读本文大概需要3分钟 关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下. 趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写a ...
- opengl 贴图坐标控制_材质贴图正确打开方式
哈喽,各位观众朋友们好鸭~欢迎来到讲道理画图的地方,我是黄玮宁. 最近呀经常有小伙伴来问我那些不同通道的材质贴图该怎么用,而且频率不是一般的高,所以我觉得有必要来说说这些通道贴图的用法了. 视频版(B ...
- python简单代码画图-Python竟能画这么漂亮的花,帅呆了(代码分享)
阅读本文大概需要3分钟 关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下. 趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写a ...
- python画图完整代码-Python科学画图代码分享
Python画图主要用到matplotlib这个库.Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 具体来说是pylab和p ...
- 用python画花瓣-Python竟能画这么漂亮的花,帅呆了(代码分享)
阅读本文大概需要3分钟 关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下. 趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写a ...
- python简单代码画图-Python科学画图代码分享
Python画图主要用到matplotlib这个库.Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 这里有一本电子书供大家参 ...
- java str2date,java date类与string类实例代码分享
Date类用来指定日期和时间,其构造函数及常用方法如下: publicDate() 从当前时间构造日期时间对象. publicStringtoString() 转换成字符串. publiclongge ...
最新文章
- 下载jdk文件后缀是.gz而不是.tar.gz怎么办
- C++ STL,ATL,WTL之间的联系和区别
- 简单排序算法(Java实现)
- AI落地谁最强?AI Top 30+案例评选等你来秀
- 操作系统之文件管理:9、磁盘的结构与磁盘调度算法(先来先服务FCFS、最短寻找时间优先SSTF、扫描算法SCAN、循环扫描算法C-SCAN、LOOK调度算法、C-LOOK调度算法)
- 安装mysql8.0配置环境_Windows环境下MySQL 8.0 的安装、配置与卸载
- 嵌入式Linux系统编程学习之七gdb调试器
- 多GPU环境运行实验的一点经验
- CDOJ 483 Data Structure Problem DFS
- Oracle10g 如何给scott用户解锁
- 【Vue】Nodejs下载与安装
- java项目 ppt,Java项目报告ppt
- 什么是Wiegand协议?什么是韦根26? 什么是韦根34?
- 【电子电路】USB串口驱动下载
- WebRTC视频码率控制(序言)
- mimax 刷原生android,小米手机想爽刷原生安卓?不愁!
- ssm学生请假系统java学生请假系统源码
- The operated node must be in the list returned by getNodeIDList
- Angular6项目运行到95%emitting LicenseWebpackPlugin不动卡住
- 五大浏览器js 判断IE、Firefox、Safari、Chrome、Opera
热门文章
- LINUX邻居子系统(一)
- 浏览器页面前端自适应方案
- linux中屏蔽定时任务,linux中的定时任务
- java scavenge_JAVA Parallel Scavenge收集器
- 洛谷-P1007-魔法少女
- OneZero第四周第五次站立会议(2016.4.15)
- DoNotRetryIOException: Compression algorithm 'lzo' previously failed test
- Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
- AJAX初窥门径教程
- 手把带你学会红外避障循迹模块