Unity场景编辑工具界面(一)

我的界面工具命名为CustomAssist,下面简称CA;
CA添加以下功能

  • Transform相对变换位置、方向、大小
  • 快速切换对象激活关闭
  • 快速编组对象
  • 快速命名子节点
  • 计算三角面和顶点

主界面

界面里有一部分功能并没有完善,但我还是贴出了最新的界面,公开给大家是想告诉大家,每个人的工具界面都不一样,都有自己整理的工具,所以这里我将分享目录中所列的几个工具,简单实用。

界面源码参考:

    public class UnityCustomAssist : EditorWindow{[MenuItem("GenerateTools/Unity Custom Assist/Unity Custom Assist Window")]private static void ShowWindow(){var window =(UnityCustomAssist)GetWindow(typeof (UnityCustomAssist), false, "CustomAssist");window.Show();}private void OnGUI(){EditorGUILayout.LabelField("ReadMe");//这里可以使用EditorGUI或者GUI函数来定义界面按钮,标签等。} }

Transform相对变换位置、方向、大小

 public static void SetPositionToZero() //设置对象位置为父节点位置 {if (Selection.gameObjects.Length != 1) return;var go = Selection.gameObjects[0];var childs = SaveChilds(go.transform);Undo.RecordObject(go.transform, "localPosition " + go.transform.name);go.transform.localPosition = Vector3.zero;ResetChilds(go.transform, childs);} public static void SetLocalRotationToFirstChild() //设置对象方向为第一个子节点的方向 {if (Selection.gameObjects.Length != 1) return;var go = Selection.gameObjects[0];var childs = SaveChilds(go.transform);if (childs.Length == 0)return;Undo.RecordObject(go.transform, "localRotation " + go.transform.name);go.transform.localRotation = childs[0].localRotation;ResetChilds(go.transform, childs);}public static void SetLocalScaleOne()//设置本地大小到(1,1,1){if (Selection.gameObjects.Length != 1) return;var go = Selection.gameObjects[0];var childs = SaveChilds(go.transform);Undo.RecordObject(go.transform, "localScale " + go.transform.name);go.transform.localScale = Vector3.one;ResetChilds(go.transform, childs);}private static Transform[] SaveChilds(Transform goTrans){var childs = new Transform[goTrans.childCount];for (var i = 0; i < childs.Length; i++){childs[i] = goTrans.GetChild(i);}for (var i = 0; i < childs.Length; i++){Undo.RecordObject(childs[i], "localPosition " + childs[i].transform.name);childs[i].SetParent(goTrans.parent);}return childs;}private static void ResetChilds(Transform go, Transform[] childs){for (var i = 0; i < childs.Length; i++){Undo.RecordObject(childs[i], "localPosition " + childs[i].transform.name);childs[i].SetParent(go);}}

参考以上脚本,举例设置位置,方向,大小各一个。可以自己搭配出更适合自己的操作,使用它的优点是,它的操作可以直接忽略子物体会引起的变化。

快速切换对象激活关闭

  [MenuItem("GenerateTools/FastKey/Batch/Enable\\Disable Multi GameObj %1")]static void SelectEnableODisable(){GameObject[] gobj = Selection.gameObjects;bool enable = !gobj[0].activeSelf;foreach (GameObject go in gobj){Undo.RecordObject(go, go.name + "setactive");go.transform.gameObject.SetActive(enable);}}

快捷键Ctrl+1,可以快速的激活或关闭选中对象。使用鼠标点击属性面板左上角来切换会比较麻烦。

快速编组对象

   public static void AddGroup(){GameObject[] gop = Selection.gameObjects;GameObject go = gop[0];GameObject empty = new GameObject();empty.transform.parent = go.transform.parent;empty.transform.localPosition = Vector3.zero;Undo.RegisterCreatedObjectUndo(empty, empty.name + "creat");for (int i = 0; i < gop.Length; i++){Undo.SetTransformParent(gop[i].transform, gop[i].transform.parent, gop[i].transform.name + "addg");gop[i].transform.SetParent(empty.transform);}empty.name = "Group " + go.name;Selection.activeGameObject = empty;Debug.Log("new Group:" + empty.name);}

快捷键Ctrl+4,为多选的几个对象添加父节点并编组,等价于新建一个空物体,并将多个对象拖进来。

快速命名子节点

    public static void ReName(){GameObject go =Selection.gameObjects[0];string goName = go.name;for (int i = 0; i < go.transform.childCount; i++){Undo.RecordObject(go.transform.GetChild(i).gameObject, go.transform.GetChild(i).gameObject.name);go.transform.GetChild(i).gameObject.name = goName + " " + i;}}

快速命名选中对象的所有子节点名字,对于强迫症严重的程序可以使用改方法进行快速命名。

计算三角面和顶点

   public static void ComputingTriangle(){GameObject go = Selection.gameObjects[0];Component[] filters;int tris = 0;int verts = 0;filters = go.GetComponentsInChildren<MeshFilter>();foreach (MeshFilter f in filters){tris += f.sharedMesh.triangles.Length / 3;verts += f.sharedMesh.vertexCount;}Debug.LogError("对象:" + go.name+ "\ntris:" + tris+ "    verts:" + verts+"\n");}

计算三角面和顶点,这个工具可以查看场景中所有对象的点面的数量,也可以查看指定对象包含的点面,便于对场景的控制。

  • Unity场景编辑工具界面一

    • 主界面
    • Transform相对变换位置方向大小
    • 快速切换对象激活关闭
    • 快速编组对象
    • 快速命名子节点
    • 计算三角面和顶点

定制自己的Unity场景编辑工具界面(一)相关推荐

  1. Unity 可视化编辑工具 树节点 Tree Node Editor 四

    Unity 可视化编辑工具 树节点 Tree Node Editor 四 接上一篇Unity Behavior Tree Editor 行为树编辑器实现 三 上一篇主要讲解编辑器的使用,像关于自定义条 ...

  2. html5场景编辑工具,3款容易上手的HTML5编辑工具推荐~

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我们的生活已经时刻可见H5页面的身影,从美食到用车.从购物到求职,可以说HTML5技术对我们生活的影响是颠覆性的.今天小编就给大家推荐5款容易上手的H5页 ...

  3. html高级编辑工具,高级编辑工具

    如何使用高级编辑工具 除了各种基本编辑功能外,万兴神剪手还提供一些更高级的编辑工具,如移轴特效,马赛克,变脸,特写镜头等. 要使用这些高级编辑工具,首先需要将媒体文件导入媒体库,然后将其拖到时间轴视频 ...

  4. CAD编辑工具中如何设置图纸的比例

    现在我们看见的图纸有大有小的,这就是因为每张图纸的比例大小不一样.所以我们在进行绘制编辑图纸的过程中就需要设置一下图纸的比例大小.那么,CAD编辑工具中如何设置图纸的比例呢?具体要怎么来进行操作呢?相 ...

  5. UE4和Unity这样的工具在车载界面的交互设计中发挥什么样的作用呢?

    UE4和Unity这样的游戏引擎工具在车载界面的交互设计中发挥了重要作用.这些工具可以帮助设计师创建现代化.直观的界面,以便驾驶员可以轻松地使用和理解. 这些工具提供了大量的可定制组件和模板,使设计师 ...

  6. MFC图形界面编辑工具

    MFC图形界面编辑工具 选题之二:图形界面编辑工具 功能要求 基本功能 能够在windows界面上画图(包括直线.空心矩形.填充矩形.空心圆.填充圆.填充圆角矩形.空心圆角矩形.文字)等 能够更改画图 ...

  7. 第一批用基因编辑工具定制DNA的婴儿即将诞生?

    国内科学家正在"创造"CRISPR婴儿. 据外媒报道,南方科技大学一研究团队正在招募患有不孕症的艾滋病阳性患者夫妇,来创造第一批用基因编辑定制的婴儿,他们的计划是消灭一种名为CCR ...

  8. 【Unity-学习-013】EasyAR4.0稀疏空间地图 在Unity中编辑扫描的场景

    之前遇到一个实验性的项目,用空间地图做场景识别,然后和游客互动拍照的需求.第一感觉就想到了 EasyAR4.0主推的空间地图功能.对于EasyAR的详细信息,请直接移步官网.那里有详细的介绍和简单的入 ...

  9. Unity表格配置编辑工具

    更多优质文章:[Aladdin的博客](http://dingxiaowei.cn) 前言 游戏开发中表格配置是必有的功能,我们会将一些游戏数据配置在表格中,一般流程是Excel编辑数据,然后导出C# ...

  10. Unity 场景资源检查工具

    一般美术出来的场景都有性能问题,如果没有标准更加不用说 这个别人开源的资源检查工具,我个人觉得还可以的,面数,材质球,贴图大小都会显示出来 作为程序员,我有一个理念是有别人写好的工具直接拿来用,满足不 ...

最新文章

  1. 排除hotnews主题内容页面上的热点图片推荐里的分类-hotnews主题top_hot.php
  2. 较主流的消息队列的比较与选型
  3. with error 126:找不到指定的模块
  4. windows主机用scp命令向Linux服务器上传和下载文件
  5. 《重构,改善既有代码的设计》读书笔记
  6. 浏览器缓存:强缓存和协商缓存
  7. JDK1.8源码分析之HashMap(一) (转)
  8. android 判断是否正在扫描蓝牙_判断蓝牙是否连接
  9. 感想3-对于业务逻辑复用、模板复用的一些思考(未完)
  10. C++primer第15章节详解面向对象程序设计
  11. OpenGL 法线贴图 切线空间 整理
  12. 锤子t1重置后怎么显示无服务器,解决锤子手机smartisanT1关机后无法正常开机(附带刷机教程图文)...
  13. ADO.NET的DataAdapter对象的方法
  14. 系列学习 Gateway 之第 4 篇 —— 网关限流
  15. 什么是SAP Analytics Cloud
  16. web前端开发期末大作业 ——个人主页(可自取源码)
  17. 【Android 11】【WiFi模块】WiFi打开函数调用流程图
  18. 【指针】编写并测试一个函数larger_of(),该函数把两个double类型变量的值替 换为较大的值。例如, larger_of(x, y)会把x和y中较大的值重新赋给两个变 量。
  19. 【论文分享】Relation-Aware Graph Attention Network for Visual Question Answering
  20. 第十章Tensorflow图像处理

热门文章

  1. linux rz 安装包,Linux系统手动安装rz sz 软件包
  2. pcb天线和纯铜天线_各种PCB板载天线以及PCB设计的要点是什么
  3. STM32学习心得三十一:485通信原理及实验
  4. System x Windows Server驱动下载
  5. 三行代码,教你在python中将MP4转化为GIF,这不完胜迅捷视频转化器?
  6. TP LINK交换机 console 超级终端链接设置
  7. 计算机大赛获奖团队采访,坚持勤奋铸就无悔青春——全国大学生数学建模大赛一等奖获奖者专访...
  8. 如何在Windows Server 2003下安装NetBEUI
  9. 解决Linux下Questasim中代码字体非常小
  10. 普林斯顿微积分读本 大纲与重点 (by zzd)