Unity 材质替换工具说明
最近遇到一个问题,两个模型的节点都一样,我想把一个模型的材质统一替换到另外一个材质上去.因为模型上绑定了动画,mesh,等其他因素,最开始我想把整个组件整体复制给另外一个obj上的想法给pass了.一个个托材质也不是我的风格.索性就写了一个简单的工具.以下是我实现的思路:
1:建立脚本EditorMaterials.cs,并引入UnityEditor命名空间
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.Linq;
using Newtonsoft.Json;
namespace LazerFrameWork
{public class EditorMaterials{}
}
2:建立缓存
static private Dictionary<string, Material[]> copyed_mat_dict;
3:将所需要的材质给拷贝到缓存中:
[MenuItem("LazerSelect/Material/CopyMaterial_dict")]static private void CopyMaterials_dict(){if (Selection.gameObjects.Count()>0){GameObject[] objs = Selection.gameObjects;copyed_mat_dict = objs.ToDictionary(v => v.name, v => v.GetComponent<SkinnedMeshRenderer>().sharedMaterials);//.GetComponent<SkinnedMeshRenderer>().sharedMaterials;}}
4:将拷贝的材质复制到选中的物体当中
[MenuItem("LazerSelect/Material/PasteMaterial_dict")]static private void PasteMaterials_dict(){if (Selection.gameObjects.Count()>0){foreach(GameObject obj in Selection.gameObjects){EditorUtility.SetDirty(obj);obj.GetComponent<SkinnedMeshRenderer>().sharedMaterials = copyed_mat_dict[obj.name];EditorUtility.SetDirty(obj);}}}
这样,开始把所需要复制的物体选中,拷贝材质到缓存中.然后将缓存中的材质复制到新的模型当中就可以啦.
Unity 材质替换工具说明相关推荐
- Unity技能工厂——字体替换工具功能的实现!
在平常我们做任何项目的时候,工具类对于我们来说是必不可少的组成部分,因为工具类可以解决实际问题或者是优化我们已经实现的功能. 当你在做项目的时候,搭建完场景后,前场景中你所创建的UI组件中的Text的 ...
- Unity 自动创建材质球工具
一个新的模型导入Unity,所有的材质都是绑定的不能修改,想调材质就只能一个个的去创建再拖贴图,想搞个工具一键创建材质并且上好贴图.百度了一下,这玩意靠谱的也是没几个,自己写一个吧. 这个稍微靠谱点, ...
- Unity批量替换材质 URP项目
Unity批量替换材质 URP项目 笔者此刻写文章的时候对Shader仅限于能看懂,以及Unity的shader和hlsl可以互相调用都是才了解,现在的需求是批量替换旧Shader至新Shader. ...
- Unity编辑器扩展——通用组件替换工具
在我们的项目过程中经常会遇到某个组件迭代的过程,那么在废弃旧组件,替换新组件的时候,就可以使用一个通用组件替换工具完成一键替换的功能. 设计图如下: 基类ReplaceComponentBase泛型类 ...
- Unity 可视化编辑工具 树节点 Tree Node Editor 四
Unity 可视化编辑工具 树节点 Tree Node Editor 四 接上一篇Unity Behavior Tree Editor 行为树编辑器实现 三 上一篇主要讲解编辑器的使用,像关于自定义条 ...
- Unity强化学习工具MLAgents
文章目录 参考资料 一.环境准备 1.下载ml-agents 2.安装Unity Hub 3.安装Unity 3D 二.新建项目 2.1 新建工程 2.2 搭建场景 2.3 设置材质 三.程序 3.1 ...
- Unity 位图字体工具
Unity 位图字体工具 原创文章,转载请注明出处:Unity 位图字体工具 Unity Editor CS 源码在最后 工具地址: www.xxasync.com - 中文 www.xxasync. ...
- Java占位符替换工具类
import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFact ...
- Qt + Python + OpenCV图标替换工具 之 Qt界面设计(四)
目录 上一篇博文 程序的下载地址以及源码 Qt界面设计 上一篇博文 Qt + Python + OpenCV图标替换工具 之 Python调用dll(三) https://blog.csdn.net/ ...
最新文章
- 使用微型计算机的基础知识,计算机应用基础考试大纲基本要求1具有使用微型计算机的基础知识.DOC...
- CUDA程序性能调优
- java开发属于itsm吗_【行业】IT服务管理(ITSM):IT行业变革的思考(1)
- c 语言输入n个数求和,c++---天梯赛---N个数求和
- 丈夫创业前后累计11次
- (转载)mysql书籍
- pyWhat从海量数据中识别出邮件或IP地址
- 029——VUE中键盘语义修饰符
- 学习笔记: PCIe 4.0 协议(一)-- 概述
- PDF预览之PDFObject.js总结
- MongoDB的使用以及和python的交互
- 苹果蓝牙耳机使用说明_苹果蓝牙耳机怎么用
- java打造手机远程控制电脑之详细教程
- 深圳的住房公积金的那些事儿~(缴纳标准,用处用法)
- Calculate Tangent Space是怎么计算切线的
- 15.模拟e^x的麦克劳林展开式
- MySQL 冷备份操作 + shell 脚本自动备份
- FPGA概念理解之:ZYNQ、PS、PL、APU、ARM、SOC、URAT、GPIO...
- 图解windows系统 硬盘主分区、扩展分区、逻辑分区的区别.
- 使用jasypt加密配置的时候,报错:DecryptionException: Unable to decrypt
热门文章
- mysql创建数据库横杠_mysql数据库创建删除带横杠的数据库名
- 交换机和路由器的实现原理
- OPC配置客户端和服务端
- oracle直接将日期转为月份,如何使用Oracle将日期转换为周,月,季度,半年,年...
- 最高每人4万元!多地出台重磅就业补贴政策
- 当我真正开始爱自己——来自UOU的馈赠
- python 做表格分析_Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集
- matlab中保存文件为excel文件
- Win10+OpenCV无法正常读取USB摄像头数据解决方案
- 开放是一种激情――北京软件自由日纪实