unity3d 批量替换模型材质的脚本 一键替换模型及子物体材质
没什么好说的,特殊需求特殊实现。批量替换模型及其所属子物体所有材质的脚本。
实现原理,,
这玩意有啥原理,循环遍历目标物体下的所有子物体,每次遍历都执行替换预先指定的材质。
让我想起前些天面试,面试官问我:“在项目中用过什么算法么?” 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 批量替换模型材质的脚本 一键替换模型及子物体材质相关推荐
- 批量修改文件名 大量文件名称一键替换文字
给大家推荐一款批量更改文件名称的工具--文件批量改名高手,它会为你节省很多时间,批量文件改名可以用来批量重命名多个文件,替换特定文字,并将文件特有的信息插入每个新文件名中,一起来看看吧! 第一步,打开 ...
- wegame一键蹲替换文件_iPhone 提示音一键替换,极简教程
iPhone 充电提示音很火,与之而来的还有各种提示音玩法.不过很多提示音的快捷指令都有一些麻烦和困难,比如: 编码数据太大不易复制.替换提示音不方便.搜寻提示音无果..... 演示流程,重点看一键替 ...
- [unity3d][通过代码]改变材质球颜色,动态改变材质球颜色,动态改变模型颜色
unity通过代码改变材质球颜色 gitee地址:https://gitee.com/asiworld csdn博客地址:https://blog.csdn.net/JianShengShuaiest ...
- 【Unity3D】使用 FBX 格式的外部模型 ( 向 Unity 中添加 FBX 模型 | 向 Scene 场景中添加 FBX 模型 | 3D 物体渲染 | 3D 物体材质设置 )
文章目录 一.向 Unity 中添加 FBX 模型 二.向 Scene 场景中添加 FBX 模型 三.3D 物体渲染 四.3D 物体材质设置 一.向 Unity 中添加 FBX 模型 Unity 中使 ...
- 不可能的工作:在FBX模型导入脚本中生成模型的预置体
不可能的工作:在FBX模型导入脚本中生成模型的预置体 #if UNITY_EDITOR using System.Collections; using System.Collections.Gener ...
- 百度网盘批量重命名文件免费脚本---2020.07
文章目录 背景 使用工具 使用方法 使用限制 其他替代产品(收费) 1.邓西软件 2.百度网盘批量处理大师 一.批量重命名 二.批量分享 三.批量转存 四.批量离线 五.批量同步 六.批量永存 七.其 ...
- Praat脚本-004 | 替换标注内容
目录 引题 代码段 运行脚本 格式要求 替换实例一 替换实例二 替换实例三 运行脚本 获取脚本 关注 版权说明 引题 我们在做音频标注的过程中,经常遇到需要批量修改某个地方,比如最开始标的发音aa,后 ...
- shell脚本一键装机(pxe配合kickstart无人值守)
shell脚本一键装机(pxe配合kickstart无人值守) shell脚本实现无人值守安装 图文详细步骤可以参前期博文: PXE批量网络装机(超详细实验教程)教会你自动化批量安装linux 系统 ...
- 查询物流信息,出现特殊符号如何一键替换
该如何快速查询物流信息呢?在查询的过程中发现物流单号中出现特殊符号的时候,该如何将这些符号一键替换呢?有兴趣的接着往下看吧,小编现在分享一个小技巧. 运行软件快递批量查询高手,进入软件主界面,先在高级 ...
最新文章
- 如何发布打印机文件夹及ICA 客户端打印机配置工具
- .net core 2.1 mysql_ASP.NET Core 2.2 + MySQL + DB First
- Deltix Round, Spring 2021 E. Crypto Lights 组合数学 + 推公式
- 【渝粤题库】陕西师范大学165209 组织职业生涯管理 作业(专升本)
- xampp mysql 卸载_卸载Xampp并安装apache + mysql + php 过程
- 飞秋2010下载在未来讲差异化
- opensuse 安装 Anaconda3 之后出现Could not start d-bus. Can you call qdbus?
- 项目操作案例丨西门子PLC通过网关连接ACS800变频器
- linux系统双显卡切换显卡驱动,自动化系统Linux显卡驱动及BIOS设置笔记(NVIDIA/ATI)...
- aria2 配置教程
- 《醉翁亭记》古文鉴赏
- 按键精灵获取14位纯数字当前时间,时间格式yyyyMMddHHmmss
- Programming-寻找发贴水王(C)
- vue3使用datav
- jquery validate插件onfocosout/onkeyup出错的解决方法
- .loc 与.iloc
- 1001: 植树问题
- access vba代码大全_这本VBA经典图书终于做活动了,还是5折!
- 基于java+SpringBoot+HTML+Mysql学生宿舍管理系统
- 数据库基础考点笔记-3
热门文章
- 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2
- 小米3 SIM 卡无法识别
- 用python的requests获取B站评论
- 【Web Design The Missing Link】Chatty APIs
- 娱美德举办WEMIX空投活动以庆祝《传奇M》在全球发布!
- 《UEFI内核导读》ACPI编程入门
- 用于自动化的 10 个杀手级 Python 脚本
- Scratch之小猫酷跑我设计
- android布局 哪个控件在最上层_Android 在最上层添加悬浮View(兼容Android 8.0)
- access是干什么的软件