如图所示,假如一个模型被大量的规整的摆放在场景中,当我们修改了这个模型需要替换时,需要将新模型按照如上位置进行逐个替换比较麻烦,下面介绍的工具Replacer可以很方便的进行批量替换:

在Hierarchy层级窗口选中所有需要替换的模型,然后指定用来替换的模型,点击Replace进行替换

工具代码如下:

using UnityEditor;
using UnityEngine;namespace SK.Framework
{/// <summary>/// 替换器/// </summary>public class Replacer : EditorWindow{[MenuItem("SKFramework/Replacer")]public static void Open(){var window = GetWindow<Replacer>("Replacer");window.maxSize = new Vector2(300f, 60f);window.minSize = new Vector2(300f, 60f);window.Show();}private GameObject target;private void OnGUI(){int count = Selection.gameObjects.Length;GUILayout.Label(string.Format("Count: {0}", count));GUILayout.BeginHorizontal();GUILayout.Label("Replacer:", GUILayout.Width(100f));target = EditorGUILayout.ObjectField(target, typeof(GameObject), true) as GameObject;GUILayout.EndHorizontal();GUI.enabled = target != null;if (GUILayout.Button("Replace")){if (EditorUtility.DisplayDialog("提醒", string.Format("将使用{0}替换所有选中的物体,是否确认?", target.name), "确认", "取消")){for (int i = 0; i < Selection.gameObjects.Length; i++){var go = Selection.gameObjects[i];var instance = Instantiate(target);instance.transform.position = go.transform.position;instance.transform.rotation = go.transform.rotation;instance.transform.SetParent(go.transform.parent);DestroyImmediate(go.gameObject);i--;}}}}private void OnSelectionChange(){Repaint();}}
}

Unity 编辑器开发实战【Editor Window】- Replacer 替换器相关推荐

  1. Unity 编辑器开发实战【Custom Editor】- FSM Editor

    本文介绍如何为FSM有限状态机模块实现一个自定义编辑器面板,FSM的详细代码在上一篇文章中有介绍,链接地址: 在Unity中构建FSM有限状态机 下面是最终效果: 首先,自定义一个编辑器面板,需要用到 ...

  2. Unity 编辑器开发实战【Custom Editor】- AudioDatabase Editor 音频库编辑器

    本文实现一个音频库的自定义编辑器,效果如图: 开始实现之前,首先简单介绍该音频库模块,音频库类Audio Database继承自Scriptable Object类,是一个可配置的资源文件: 包含的内 ...

  3. Unity 编辑器开发实战【Editor Window】- BlendShape调试工具

    Skin Mesh Renderer组件编辑器本身包含BlendShape的调试滑动条,但是当数量较多想要重置时较为麻烦,下面介绍的工具添加了这些调试滑动条的同时,增加了一键重置的功能: 代码如下: ...

  4. Unity 编辑器开发实战【Editor Window】- 关于提高Proto通信协议文件生成效率的考虑

    在项目中使用Protobuf作为通信协议时,需要用到protogen.exe程序将.proto文件编译成.cs文件再导入Unity工程中使用: 例如我们创建一个ProtoTest.proto文件: 然 ...

  5. Unity 编辑器开发实战【Custom Editor】- 为UI视图制作动画编辑器

    为了更方便地为UI视图添加动画,将动画的编辑功能封装在了UI View类中,可以通过编辑器快速的为视图编辑动画.动画分为两种类型,一种是Unity中的Animator动画,该类型直接通过一个字符串类型 ...

  6. Unity编辑器开发(五):实战、开发一个AB包编辑器工具

    前言 在我们上一篇(Unity编辑器开发(四):实战.开发一个AB包编辑器工具)的结尾,我们拥有了如下图中那样的一个编辑器窗口: 接下来我们来完成最后部分,也就是包括创建AB包,清理AB包,删除AB包 ...

  7. 《Unity虚拟现实开发实战》——第1章,第1.8节小结

    本节书摘来自华章出版社<Unity虚拟现实开发实战>一书中的第1章,第1.8节小结,作者[美] 乔纳森·林诺维斯,更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...

  8. 《Unity虚拟现实开发实战》——第3章,第3.6节虚拟现实设备的运行原理

    本节书摘来自华章出版社<Unity虚拟现实开发实战>一书中的第3章,第3.6节虚拟现实设备的运行原理,作者[美] 乔纳森·林诺维斯,更多章节内容可以访问云栖社区"华章计算机&qu ...

  9. Unity编辑器开发——组件聚焦问题

    个人学习笔记,如有错误.疑问.建议,欢迎留言. 声明:本文不得以任何形式进行转载.  前言:在进行Unity编辑器开发时,经常遇到一个组件的聚焦问题:可以更改的组件,如果通过其他方式对其进行更新(即不 ...

  10. Unity编辑器开发:2020更新

    正所谓:人靠衣装,佛靠金装.学会插件开发,成就大神人生. 欢迎关注公众号:雷潮课堂 编辑器开发 一.课程内容 1-1本课程目标 1-2插件开发的起因 1-3插件的作用 二.菜单项制作 2-1菜单项(M ...

最新文章

  1. springcloud(三):服务提供与调用
  2. java和python哪个好学-学java好还是Python好?
  3. Sendmail+dovecot+saslauth+rainloop
  4. hihoCoder 1312:搜索三·启发式搜索(A* + 康托展开)
  5. android roboto字体下载,Android字体设置及Roboto字体使用方法
  6. [linux驱动]linux驱动模块
  7. JAVA Drp项目实战—— Unable to compile class for JSP 一波三折
  8. 对于C# 中事件的参数(object sender, EventArgs e)
  9. 技嘉h310主板前置音频没声音_电脑前置插孔没声音 前置音频没声音解决方法
  10. 计算机联锁静态数据表,计算机联锁功能.doc
  11. mstar v56几路hdmi_TCL MStar常用升级方法图文教程
  12. 冰桶挑战:一个吊炸天的病毒式营销案例剖析
  13. 【这很AI】斯坦福新人工智能系统曝光:用算法优化难民工作分配
  14. BGP带宽是什么意思
  15. 【Babel】1186- 保姆级教学!这次一定学会 Babel 插件开发!
  16. 知乎文章如何复制下来
  17. 大图片显示在客户端,被压扁失真的问题
  18. 闭关修炼(二十二)session和cookie原理
  19. MVC5 + EF6 + Bootstrap3 (14) 分部视图PartialView
  20. 法律人如何使用python_执业10年,我见过太多法律人掉进这个大坑!

热门文章

  1. An improved genetic algorithm for the flexible job shop scheduling problem with multiple time constr
  2. linux服务器鼠标键盘没反应,Fedora 键盘鼠标输入没反应及解决办法
  3. 新浪邮箱界面登录按钮效果制作
  4. 弗洛伊德学说中的本我、自我和超我
  5. 新增收货地址管理 html,关于“收货地址”的二三事
  6. 计算机图形学 期中大作业 俄罗斯方块
  7. 服务器2003系统密钥,服务器2003系统密钥
  8. HTML---网页编程(1)
  9. Win7 Python3.5安装Scrapy
  10. pyqt 取鼠标处文字_侧裙可拆按键随心装,黑爵GTi模块化游戏鼠标评测