马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
先看效果

实现方案
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,然后就完成啦,同样你也可以按照我的思路再扩展扩展,可以替换你自己想要的内容
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |