Unity 编辑器扩展 一键替换指定物体下的所有材质球

先看效果

实现方案

1:创建几个用于测试的Cube

2:创建一个脚本

3:编写脚本内容

主要是这部分的逻辑

附上完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;public class Tool
{[MenuItem("TOOL/ReplaceMaterial")]public static void Open(){var window = EditorWindow.GetWindow(typeof(ReplaceMA));window.title = "材质球替换工具";}
}
public class ReplaceMA : EditorWindow
{private GameObject _GameObject;private Material _Material;private void OnGUI(){if (!Application.isPlaying){GUILayout.Label("拖入一个你想替换材质球的游戏物体");_GameObject = (GameObject)EditorGUILayout.ObjectField(_GameObject, typeof(GameObject), true);GUILayout.Label("拖入一个你想替换的材质球");_Material = (Material)EditorGUILayout.ObjectField(_Material, typeof(Material), true);if (GUILayout.Button("点击替换")){if (_GameObject == null || _Material == null){Debug.LogError("你要替换材质的游戏物体或者材质球为空");return;}var RenderList = new List<Renderer>();RenderList.Add(_GameObject.gameObject.GetComponent<Renderer>());RenderList.AddRange(_GameObject.GetComponentsInChildren<Renderer>());Undo.RecordObjects(RenderList.ToArray(), "Replace");//这句话非常重要,不然得气死个人!!!foreach (var item in RenderList){var materials = item.sharedMaterials;for (int i = 0; i < materials.Length; i++){materials[i] = _Material;}item.sharedMaterials = materials;}}}}
}

4,然后就完成啦,同样你也可以按照我的思路再扩展扩展,可以替换你自己想要的内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/22509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

json文件操作和异常处理

目录 按行读取文件readline() 读取大文件: json文件: json文件介绍: json的语法&#xff1a; 读取json文件: json文件写入: 异常&#xff1a; 捕获异常: 捕获指定类型的异常: 捕获未知类型的异常(使用最多): 异常捕获的完整结构: 异常传递: ​编辑抛出异常: 按行…

[HDCTF 2023]Normal_Rsa(e,phi不互素)

题目&#xff1a; from Crypto.Util.number import * mbytes_to_long(bxxxxxx) pgetPrime(256) qgetPrime(256) e74 np*q cpow(m,e,n) print("p",p) print("q",q) print("c",c) #p 8605358291738634342256717476404047103323438810696848883487…

如何评价GPT-4o?【模板】

如何评价GPT-4o? 简介&#xff1a;最近&#xff0c;GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价&#xff0c;包括版本间的对比分析、GPT-4o的技术能力以及个人感受等。 提醒&#xff1a;在发布作品前&#xff0c;请把不需要的内容删掉。 方向一&#xff1a;对比分析 提…

C++字符串转base64编码

上一篇博客中分享的案例里面base64编码的工具函数单独拿出来分享一下&#xff0c;为不想自己写的大佬提供快捷的CV路径 const std::string base64_chars "ABCDEFGHIJKLMNOPQRSTUVWXYZ""abcdefghijklmnopqrstuvwxyz""0123456789/";std::string ba…

java如何通过循环计算阶乘

比如说要计算5的阶乘 先定义一个变量a5 再定义一个变量b1 通过一个循环 b*a a-- 示例代码如下 public class HelloWorld { public static void main(String[] args) { int a5; int b1; do { b*a; a--; } while(a>0); System.out.println(b); } }

openAI项目

文章目录 为什么单独提供chatgpt-sdk&#xff1f; 分而治之&#xff0c;不同的模块修改&#xff0c;不会影响到整体的变动。比如就只是 sdk 调整&#xff0c;或者再引入新的 sdk 都会非常容易管理。资源问题&#xff0c;如果公司内有多个系统都需要用到这个 sdk&#xff0c;那么…

A6500-LC LVDT 前置器,用于A6500-UM, 导轨安装

电源 22.5V to 32VDC <30mA <0.1%/V <60V( 使用SELV/PELV 供电电源) 约2.2Vrms,5kHz IP20 IEC 60529 -35C to 75C(-31F to 167F) -35C to 85C(-31F to 185F) 电流损耗 供电电压对 运行温度 存储温度 0.35mm(0.014 in ),10 to 55Hz 15g 根据 EN 60068-2-27 根据IEC 613…

北邮21硕后端开发笔记

blog 整理北邮21渣硕Java后端开发知识网络&#xff0c;阅读笔记以及技术博客&#xff0c;持续更新&#xff01;欢迎Star&#xff01; GitHub: https://github.com/WeiXiao-Hyy/blog Java 基础篇 一文带你搞懂final关键字 Java并发编程 fucking-java-concurrency解读 CS…

linux必学基础命令大全

一切皆文件&#xff0c;每个文件都有具体的用途 命令快捷查看目录 常用命令 - 目录类1、ls 查看当前目录下的文件2、man查看命令详细信息3、pwd 查看当前目录 -4、cd 进入目录5、清屏命令6、mkdir创建目录7、du查看文件或者文件夹大小 常用命令 - 文件类1、vim/vi使用2、cat 查…

Maven实战: 从工程创建自定义archetype

在上一节中(创建自定义archetype)我们手动创建了一个项目模板&#xff0c;经过5步能创建出一个项目模板&#xff0c;如果我有一个现成的项目&#xff0c;想用这个项目作为模板来生成其他项目呢&#xff1f;Maven提供了基于项目生成archetype模板的能力&#xff0c;我们分3步来讲…

Windows下 CLion中,配置 OpenCV、LibTorch

首先按照win下C部署深度学习模型之clion配置pytorchopencv教程记录 步骤配置。 LibTorch 部分 在测试LibTorch时会出现类似 c10.dll not found 的问题&#xff08;Debug才有&#xff09;&#xff1a; 参考C部署Pytorch&#xff08;Libtorch&#xff09;出现问题、错误汇总和 …

行业分析---造车新势力之理想汽车

1 前言 在之前的博客中&#xff0c;笔者撰写了多篇行业类分析的文章&#xff08;科技新能源&#xff09;&#xff1a; 《行业分析---我眼中的Apple Inc.》 《行业分析---马斯克的Tesla》 《行业分析---造车新势力之蔚来汽车》 《行业分析---造车新势力之小鹏汽车》 此类文章的受…

js - WebWorkers

多线程: Web Workers 允许你创建一个或多个独立的线程来运行JavaScript&#xff0c;这些线程与主执行线程&#xff08;UI线程&#xff09;分离。 不阻塞UI: 因为脚本在单独的线程中运行&#xff0c;所以即使它们需要很长时间来执行&#xff0c;也不会阻塞用户界面或影响用户交…

vulntarget-b记录(Sliver学习)

网络环境 域控&#xff08;Win2016&#xff09; vulntarget\administrator&#xff1a;Admin123、&#xff08;首次登陆要改密码修改为Admin123&#xff09; vulntarget\win101&#xff1a;admin#123 边界Web主机突破 nmap扫描发现81端口 通过扫描&#xff0c;fuzz出来了后…

【Python学习】面向对象(OOP)

让我们从Python面向对象编程&#xff08;OOP&#xff09;的基础概念开始&#xff0c;逐步深入到继承、多态、特殊方法和运算符重载。 一、类和对象 什么是类和对象&#xff1f; - 类&#xff08;Class&#xff09;&#xff1a;类是创建对象的蓝图或模板。它定义了一组属性和方法…

c语言如何改变文件读取位置

c语言要改变文件读取位置&#xff0c;会用到rewind语句和fseek语句 rewind语法格式是 rewind(fp)将fp指向的文件读写指针重新指向文件开头 rewind代码示例如下 #include<stdio.h> int main() {FILE *fp1,*fp2;char buf[10];int a;fp1fopen("aaa.txt","…

DJI FlyCart 30 天空 “吊车”概念板评测!

从消费级无人机&#xff0c;到专业级无人机&#xff0c;再到行业级无人机&#xff0c;大疆的探索脚步从未停下。现在&#xff0c;大疆已经正式进入民用运载无人机行列&#xff01;就在8月16日&#xff0c;大疆正式发布首款民用运载无人机 —— DJI FlyCart 30。 作为大疆第一代…

【面试题-002】Java 中,`==` 和 `equals()`区别

在 Java 中&#xff0c; 和 equals() 是两种常用的比较操作&#xff0c;但它们用于不同的目的&#xff1a; 操作符&#xff1a; 用于比较两个对象的引用是否相同&#xff0c;即它们是否指向内存中的同一个对象。对于基本数据类型&#xff08;如 int、float、char 等&#xff0…

1130. 【二维数组】打印螺旋矩阵

题目描述 打印n行的以下图形&#xff0c;n由键盘输入&#xff0c;例如n5时&#xff1a; 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 输入 输入n&#xff0c;表示n行 输出 输出符合规律的n行矩阵 样例输入 复制 5 样例输…

android使用通知和快捷方式

1.权限 android 13版本 将通知改为运行时权限&#xff0c;需要向用户动态申请权限。 // 权限请求implementation com.guolindev.permissionx:permissionx:1.7.1 2.通知工具类 通知了解&#xff1a;官网 import android.app.NotificationChannel import android.app.Notifi…