最近遇到一个问题,两个模型的节点都一样,我想把一个模型的材质统一替换到另外一个材质上去.因为模型上绑定了动画,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 材质替换工具说明相关推荐

  1. Unity技能工厂——字体替换工具功能的实现!

    在平常我们做任何项目的时候,工具类对于我们来说是必不可少的组成部分,因为工具类可以解决实际问题或者是优化我们已经实现的功能. 当你在做项目的时候,搭建完场景后,前场景中你所创建的UI组件中的Text的 ...

  2. Unity 自动创建材质球工具

    一个新的模型导入Unity,所有的材质都是绑定的不能修改,想调材质就只能一个个的去创建再拖贴图,想搞个工具一键创建材质并且上好贴图.百度了一下,这玩意靠谱的也是没几个,自己写一个吧. 这个稍微靠谱点, ...

  3. Unity批量替换材质 URP项目

    Unity批量替换材质 URP项目 笔者此刻写文章的时候对Shader仅限于能看懂,以及Unity的shader和hlsl可以互相调用都是才了解,现在的需求是批量替换旧Shader至新Shader. ...

  4. Unity编辑器扩展——通用组件替换工具

    在我们的项目过程中经常会遇到某个组件迭代的过程,那么在废弃旧组件,替换新组件的时候,就可以使用一个通用组件替换工具完成一键替换的功能. 设计图如下: 基类ReplaceComponentBase泛型类 ...

  5. Unity 可视化编辑工具 树节点 Tree Node Editor 四

    Unity 可视化编辑工具 树节点 Tree Node Editor 四 接上一篇Unity Behavior Tree Editor 行为树编辑器实现 三 上一篇主要讲解编辑器的使用,像关于自定义条 ...

  6. Unity强化学习工具MLAgents

    文章目录 参考资料 一.环境准备 1.下载ml-agents 2.安装Unity Hub 3.安装Unity 3D 二.新建项目 2.1 新建工程 2.2 搭建场景 2.3 设置材质 三.程序 3.1 ...

  7. Unity 位图字体工具

    Unity 位图字体工具 原创文章,转载请注明出处:Unity 位图字体工具 Unity Editor CS 源码在最后 工具地址: www.xxasync.com - 中文 www.xxasync. ...

  8. Java占位符替换工具类

    import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFact ...

  9. Qt + Python + OpenCV图标替换工具 之 Qt界面设计(四)

    目录 上一篇博文 程序的下载地址以及源码 Qt界面设计 上一篇博文 Qt + Python + OpenCV图标替换工具 之 Python调用dll(三) https://blog.csdn.net/ ...

最新文章

  1. 使用微型计算机的基础知识,计算机应用基础考试大纲基本要求1具有使用微型计算机的基础知识.DOC...
  2. CUDA程序性能调优
  3. java开发属于itsm吗_【行业】IT服务管理(ITSM):IT行业变革的思考(1)
  4. c 语言输入n个数求和,c++---天梯赛---N个数求和
  5. 丈夫创业前后累计11次
  6. (转载)mysql书籍
  7. pyWhat从海量数据中识别出邮件或IP地址
  8. 029——VUE中键盘语义修饰符
  9. 学习笔记: PCIe 4.0 协议(一)-- 概述
  10. PDF预览之PDFObject.js总结
  11. MongoDB的使用以及和python的交互
  12. 苹果蓝牙耳机使用说明_苹果蓝牙耳机怎么用
  13. java打造手机远程控制电脑之详细教程
  14. 深圳的住房公积金的那些事儿~(缴纳标准,用处用法)
  15. Calculate Tangent Space是怎么计算切线的
  16. 15.模拟e^x的麦克劳林展开式
  17. MySQL 冷备份操作 + shell 脚本自动备份
  18. FPGA概念理解之:ZYNQ、PS、PL、APU、ARM、SOC、URAT、GPIO...
  19. 图解windows系统 硬盘主分区、扩展分区、逻辑分区的区别.
  20. 使用jasypt加密配置的时候,报错:DecryptionException: Unable to decrypt

热门文章

  1. mysql创建数据库横杠_mysql数据库创建删除带横杠的数据库名
  2. 交换机和路由器的实现原理
  3. OPC配置客户端和服务端
  4. oracle直接将日期转为月份,如何使用Oracle将日期转换为周,月,季度,半年,年...
  5. 最高每人4万元!多地出台重磅就业补贴政策
  6. 当我真正开始爱自己——来自UOU的馈赠
  7. python 做表格分析_Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集
  8. matlab中保存文件为excel文件
  9. Win10+OpenCV无法正常读取USB摄像头数据解决方案
  10. 开放是一种激情――北京软件自由日纪实