没什么好说的,特殊需求特殊实现。批量替换模型及其所属子物体所有材质的脚本。

实现原理,,

这玩意有啥原理,循环遍历目标物体下的所有子物体,每次遍历都执行替换预先指定的材质。
让我想起前些天面试,面试官问我:“在项目中用过什么算法么?” MDZZ简直有病。。

步骤1

在assets文件夹下 建立名为Editor的文件夹,该文件夹不会被打包编译,只会在unity编辑器下运行

步骤2

在Editor文件夹下建立名为ChangeModelMaterils.cs的脚本,然后将下列代码粘贴

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;public class ChangeModelMaterils : Editor
{public static GameObject targetModel;private static Material[] modelMaterials;public static Material srcTargett;//创建多级菜单并声明顺序[MenuItem("一级菜单名/批量替换", false, 100)]public static void Menu1(){// 在此处填写场景中目标无提名this.targetModel = GameObject.Find("目标模型名");// 遍历处理的静态方法,当遍历到一个子物体后就会触发相应的处理事件,此处的事件是替换指定的材质this.GetGOAllChilren<Renderer>(targetModel, (Renderer r) =>{Material mat = Resources.Load<Material>("asset目录下的材质路径名称,不包含asset") as Material;r.sharedMaterial = mat;});}// 遍历获取所有子物体public static void GetGOAllChilren<W>(GameObject go, Action<W> a){if (go.transform.childCount > 0){for (int i = 0; i < go.transform.childCount; i++){GameObject g = go.transform.GetChild(i).gameObject;GetGOAllChilren<W>(g, a);}}if (go.TryGetComponent<W>(out W w)){a?.Invoke(w);};}
}
步骤三

实施不耻的目的

回到unity编辑器,会发现菜单栏中多了一个名为“一级菜单”的菜单按钮,点击菜单中的批量替换,即可将模型及其所有子模型替换指定的材质。当然稍作改造就可以实现用不同的材质替换到不同的子物体,这里就不赘述。

unity3d 批量替换模型材质的脚本 一键替换模型及子物体材质相关推荐

  1. 批量修改文件名 大量文件名称一键替换文字

    给大家推荐一款批量更改文件名称的工具--文件批量改名高手,它会为你节省很多时间,批量文件改名可以用来批量重命名多个文件,替换特定文字,并将文件特有的信息插入每个新文件名中,一起来看看吧! 第一步,打开 ...

  2. wegame一键蹲替换文件_iPhone 提示音一键替换,极简教程

    iPhone 充电提示音很火,与之而来的还有各种提示音玩法.不过很多提示音的快捷指令都有一些麻烦和困难,比如: 编码数据太大不易复制.替换提示音不方便.搜寻提示音无果..... 演示流程,重点看一键替 ...

  3. [unity3d][通过代码]改变材质球颜色,动态改变材质球颜色,动态改变模型颜色

    unity通过代码改变材质球颜色 gitee地址:https://gitee.com/asiworld csdn博客地址:https://blog.csdn.net/JianShengShuaiest ...

  4. 【Unity3D】使用 FBX 格式的外部模型 ( 向 Unity 中添加 FBX 模型 | 向 Scene 场景中添加 FBX 模型 | 3D 物体渲染 | 3D 物体材质设置 )

    文章目录 一.向 Unity 中添加 FBX 模型 二.向 Scene 场景中添加 FBX 模型 三.3D 物体渲染 四.3D 物体材质设置 一.向 Unity 中添加 FBX 模型 Unity 中使 ...

  5. 不可能的工作:在FBX模型导入脚本中生成模型的预置体

    不可能的工作:在FBX模型导入脚本中生成模型的预置体 #if UNITY_EDITOR using System.Collections; using System.Collections.Gener ...

  6. 百度网盘批量重命名文件免费脚本---2020.07

    文章目录 背景 使用工具 使用方法 使用限制 其他替代产品(收费) 1.邓西软件 2.百度网盘批量处理大师 一.批量重命名 二.批量分享 三.批量转存 四.批量离线 五.批量同步 六.批量永存 七.其 ...

  7. Praat脚本-004 | 替换标注内容

    目录 引题 代码段 运行脚本 格式要求 替换实例一 替换实例二 替换实例三 运行脚本 获取脚本 关注 版权说明 引题 我们在做音频标注的过程中,经常遇到需要批量修改某个地方,比如最开始标的发音aa,后 ...

  8. shell脚本一键装机(pxe配合kickstart无人值守)

    shell脚本一键装机(pxe配合kickstart无人值守) shell脚本实现无人值守安装 图文详细步骤可以参前期博文: PXE批量网络装机(超详细实验教程)教会你自动化批量安装linux 系统 ...

  9. 查询物流信息,出现特殊符号如何一键替换

    该如何快速查询物流信息呢?在查询的过程中发现物流单号中出现特殊符号的时候,该如何将这些符号一键替换呢?有兴趣的接着往下看吧,小编现在分享一个小技巧. 运行软件快递批量查询高手,进入软件主界面,先在高级 ...

最新文章

  1. 如何发布打印机文件夹及ICA 客户端打印机配置工具
  2. .net core 2.1 mysql_ASP.NET Core 2.2 + MySQL + DB First
  3. Deltix Round, Spring 2021 E. Crypto Lights 组合数学 + 推公式
  4. 【渝粤题库】陕西师范大学165209 组织职业生涯管理 作业(专升本)
  5. xampp mysql 卸载_卸载Xampp并安装apache + mysql + php 过程
  6. 飞秋2010下载在未来讲差异化
  7. opensuse 安装 Anaconda3 之后出现Could not start d-bus. Can you call qdbus?
  8. 项目操作案例丨西门子PLC通过网关连接ACS800变频器
  9. linux系统双显卡切换显卡驱动,自动化系统Linux显卡驱动及BIOS设置笔记(NVIDIA/ATI)...
  10. aria2 配置教程
  11. 《醉翁亭记》古文鉴赏
  12. 按键精灵获取14位纯数字当前时间,时间格式yyyyMMddHHmmss
  13. Programming-寻找发贴水王(C)
  14. vue3使用datav
  15. jquery validate插件onfocosout/onkeyup出错的解决方法
  16. .loc 与.iloc
  17. 1001: 植树问题
  18. access vba代码大全_这本VBA经典图书终于做活动了,还是5折!
  19. 基于java+SpringBoot+HTML+Mysql学生宿舍管理系统
  20. 数据库基础考点笔记-3

热门文章

  1. 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2
  2. 小米3 SIM 卡无法识别
  3. 用python的requests获取B站评论
  4. 【Web Design The Missing Link】Chatty APIs
  5. 娱美德举办WEMIX空投活动以庆祝《传奇M》在全球发布!
  6. 《UEFI内核导读》ACPI编程入门
  7. 用于自动化的 10 个杀手级 Python 脚本
  8. Scratch之小猫酷跑我设计
  9. android布局 哪个控件在最上层_Android 在最上层添加悬浮View(兼容Android 8.0)
  10. access是干什么的软件