[引擎]之四:unity中查看简单mesh顶点顺序的小工具——修改
2018-02-09 11:17
573 查看
1 添加查看顶点位置和uv信息
2 兼容顶点数量和uv数量不同的情况
3 添加是否显示信息的选项
4 完整代码
5 最后
这里制作的小工具,功能有点单薄,只能查看顶点的顺序。
在写CubeMesh的时候,需要查看顶点的位置信息和uv信息。
因此,添加这两个功能:
嗯,完成了,看一下运行效果:
![](http://img.blog.csdn.net/20180105114543782?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuY2hlenVv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
所以,在Inspector中添加是否显示信息的选项,就是这样:
![](http://img.blog.csdn.net/20180105115003242?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuY2hlenVv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
Unity中的Editor类,重写OnInspectorGUI()方法,添加自己想要的选项。代码如下:
然后使用这几个布尔值就可以了。
只看index和uv效果:
![](http://img.blog.csdn.net/20180105115350217?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuY2hlenVv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
积跬步以至千里。
以上。
2 兼容顶点数量和uv数量不同的情况
3 添加是否显示信息的选项
4 完整代码
5 最后
这里制作的小工具,功能有点单薄,只能查看顶点的顺序。
在写CubeMesh的时候,需要查看顶点的位置信息和uv信息。
因此,添加这两个功能:
(1) 添加查看顶点位置和uv信息
在MeshViewerEditor中,添加两个方法,来显示顶点位置信息和uv信息。因为目前只会在简单的mesh查看时用到,所以不必太考虑性能什么的,先有再追求。以下是新加的代码:// 显示顶点位置Str private void AddVerticeStr(ref StringBuilder sb, Vector3 vert) { sb.Append(",vertice:" + vert); } // 显示uv信息Str private void AddUVStr(ref StringBuilder sb,Vector2 uv) { sb.Append(",uv:" + uv); }
(2) 兼容顶点数量和uv数量不同的情况
在新建Mesh的过程中,先添加顶点,之后才会给每个顶点添加uv坐标。所以,有可能uv坐标的数量和顶点数量不一致。这个时候,兼容一下。修改显示uv信息的方法:private void AddUVStr(ref StringBuilder sb, ref List<Vector2> uvList, int index) { if (uvList.Count > index) { sb.Append(",uv:" + uvList[index]); } }
嗯,完成了,看一下运行效果:
(3) 添加是否显示信息的选项
有时候,希望只看顶点信息或者uv信息什么的,不要全部显示。所以,在Inspector中添加是否显示信息的选项,就是这样:
Unity中的Editor类,重写OnInspectorGUI()方法,添加自己想要的选项。代码如下:
private bool showInfo = true; private bool showUV = true; private bool showVertice = true; public override void OnInspectorGUI() { base.OnInspectorGUI(); showInfo = GUILayout.Toggle(showInfo, "Show Info"); showVertice = GUILayout.Toggle(showVertice, "Show Vertice"); showUV = GUILayout.Toggle(showUV, "Show UV"); }
然后使用这几个布尔值就可以了。
(4) 完整代码
using UnityEditor; using UnityEngine; using System.Collections.Generic; using System.Text; namespace YanCheZuo { [CustomEditor(typeof(TestMeshViewer))] public class MeshViewerEditor : Editor { private bool showInfo = true; private bool showUV = true; private bool showVertice = true; public override void OnInspectorGUI() { base.OnInspectorGUI(); showInfo = GUILayout.Toggle(showInfo, "Show Info"); showVertice = GUILayout.Toggle(showVertice, "Show Vertice"); showUV = GUILayout.Toggle(showUV, "Show UV"); } private void OnSceneGUI() { if (!showInfo) { return; } GUIStyle style = new GUIStyle(); style.normal.textColor = Color.red; TestMeshViewer viewer = target as TestMeshViewer; Dictionary<Vector3, StringBuilder> posList = new Dictionary<Vector3, StringBuilder>(); for (int i = 0, imax = viewer.verticesList.Count; i < imax; ++i) { Vector3 vPos = viewer.transform.TransformPoint(viewer.verticesList[i]); StringBuilder sb; if (posList.TryGetValue(vPos, out sb)) { StringBuilder str = new StringBuilder("index:" + i); AddVerticeStr(ref str, vPos); AddUVStr(ref str, ref viewer.uvList, i); sb.AppendLine(str.ToString()); } else { sb = new StringBuilder(); StringBuilder str = new StringBuilder("index:" + i); AddVerticeStr(ref str, vPos); AddUVStr(ref str, ref viewer.uvList, i); sb.AppendLine(str.ToString()); posList.Add(vPos, sb); } Handles.Label(vPos, sb.ToString(), style); } } private void AddVerticeStr(ref StringBuilder sb, Vector3 vert) { if (!showVertice) { return; } sb.Append(",vertice:" + vert); } private void AddUVStr(ref StringBuilder sb, ref List<Vector2> uvList, int index) { if (!showUV) { return; } if (uvList.Count > index) { sb.Append(",uv:" + uvList[index]); } } } }
只看index和uv效果:
(5) 最后
生产工具决定生产力。定制工具比不可少。之后还会根据需要进行工具的更新。积跬步以至千里。
以上。
相关文章推荐
- [引擎]之二:unity中查看简单mesh顶点顺序的小工具
- [引擎]之一:mesh在Unity中的简单使用
- 在Unity中使用UGUI修改Mesh绘制几何图形
- Unity 一键查看资源引用工具
- 简单的 Kubernetes Pod 日志查看工具 Kubetail
- 使用.NET Reflector 查看Unity引擎里面的DLL文件
- Unity 4.2.0 官方最新破解版(Unity3D 最新破解版,3D游戏开发工具和游戏引擎套件)
- 在CentOS/RHEL 7中,使用hostnamectl的命令行工具,查看或修改与主机名相关的配置
- Mysql查看建表语句以及修改引擎
- MySQL查看和修改表的存储引擎
- MySQL查看修改存储引擎总结
- MySQL客户端、服务器端工具、sql_mode、存储引擎修改、事务的提交和回滚、隔离级别
- MySQL查看和修改表的存储引擎
- [置顶] 基于Unity引擎的简单对象池
- VS中查看/修改Dialog控件TAB顺序的方法
- 安卓 apk 文件反编译工具集,查看/修改apk真正利器,全部已经收集到最新版本
- 【Unity小工具】批量修改原始资源设置
- kvm 虚拟机 实用工具笔记(方便查看ip 磁盘复制和修改文件等)
- mysql查看当前库使用的引擎及简单操作
- MySQL查看和修改表的存储引擎