【Unity】Gizmos:可视化Debug
Gizmos是什么:
Gizmos用于场景中给出一个可视化的调试或辅助设置
游戏Scene场景中的灰色线条,绿色的碰撞体条纹等都是由Gizmos绘制的
如何开启Gizmos呢,在Scene和Game界面的右上角有一个Gizmos按钮(右边有小箭头能展开)
展开后可以看到Unity自带的Gizmos,可以通过勾选右边的选择框来选择展示或隐藏某个脚本的Gizmos。
如何根据需求自定义Gizmos呢?
我们先创建一个脚本GizmosDemo.cs,在这个类中添加OnDrawGizmos(),并将该脚本挂载到游戏场景中的某个GameObject上去。
脚本如下:
using UnityEngine;
using System.Collections;using UnityEngine;
using System.Collections;public class GizmosDemo : MonoBehaviour {#region Public Variablespublic Color gizmosColor;public float gizmosSize = 1;public Vector3 posA;public Vector3 posB;#endregionvoid OnDrawGizmos(){}
}
在添加了OnDrawGizmos方法后,我们可以再视图的右上角Gizmos中为挂在了我们GizmosDemos.cs的游戏体设置Unity自带的几个Gizmos的icon或自定义其Gizmos的icon
不要再Hierarchy中选中挂载了GizmosDemo.cs脚本的游戏体,然后观察Scene视图,可以看到我们给脚本定义的橘黄色icon:
而我们创建的GizmosDemo.cs脚本竟然也成了橘黄色的icon样式:
那么如何绘制我们自己想要的形状呢,首先我们在OnDrawGizmos中添加如下语句
//设置Gizmos颜色Gizmos.color = gizmosColor;//以当前物体位置为中心,1为半径画球Gizmos.DrawSphere(transform.position, gizmosSize);
通过改变gizmosColor的值,可以改变Gizmos的颜色,而通过改变gizmosSize的值能改变Gizmos的大小:
Gizmos还有很多方法,都比较类似,查一下文档就知道怎么用了。
另外,之前我们绘制Gizmos都是在世界坐标系下绘制的,那怎么在物体坐标系下绘制呢?
——只要把Gizmos.matrix设置为transform.localToWorldMatrix即可
下面是以上知识点示例代码:
using UnityEngine;
using System.Collections;public class GizmosDemo : MonoBehaviour {public Color gizmosColor;public Color gizmosLineColor;public float gizmosSize;public Vector3 posA;public Vector3 posB;public bool onOffSwitch = false;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}void OnDrawGizmos(){Matrix4x4 oldGizmos = Gizmos.matrix;//The basicsGizmos.color = gizmosColor;//Gizmos.DrawSphere (transform.position, gizmosSize);Gizmos.DrawCube(transform.position, new Vector3(gizmosSize, gizmosSize, gizmosSize));Gizmos.color = gizmosLineColor;//Gizmos.DrawWireCube (transform.position, gizmosSize);Gizmos.DrawWireCube(transform.position, new Vector3(gizmosSize, gizmosSize, gizmosSize));//Look into raysGizmos.color = Color.blue;Gizmos.DrawRay (transform.position, transform.TransformDirection (Vector3.forward));Gizmos.color = Color.red;Gizmos.DrawRay (transform.position, transform.TransformDirection (Vector3.right));Gizmos.color = Color.green;Gizmos.DrawRay (transform.position, transform.TransformDirection (Vector3.up));//Look into lines//为了把sphere绘制在物体坐标系Gizmos.matrix = transform.localToWorldMatrix;Gizmos.color = Color.yellow;Gizmos.DrawSphere (posA, gizmosSize * 0.5f);Gizmos.DrawSphere (posB, gizmosSize * 0.5f);Gizmos.color = gizmosLineColor;Gizmos.DrawLine (posA, posB);Gizmos.matrix = oldGizmos;//Multi Iconsif (onOffSwitch){//Assets目录下需要有一个Gizmos文件夹,存放下面用到的两张图片Gizmos.DrawIcon (transform.position, "onSwitch_icon.png");} else {Gizmos.DrawIcon (transform.position, "offSwitch_icon.png");}}
}
效果如下:
最后推荐一篇相关文章http://blog.csdn.net/u010019717/article/details/46039081
【Unity】Gizmos:可视化Debug相关推荐
- Unity Gizmos可视化辅助工具
所有gizmo绘制需要在脚本的OnDrawGizmos或OnDrawGizmosSelected里函数完成. OnDrawGizmos在每帧调用.所有在OnDrawGizmos中渲染的gizmos都是 ...
- 一种城市道路网络的随机生成方式(Unity中可视化)
一种城市道路网络的随机生成方式(Unity中可视化) 1. 说在开头 2. 有限元网格划分 2.1. 什么是有限元 2.2. 前沿推进法/波前推进法(Advancing Front Technique ...
- Unity Gizmos 绘制 Camera 的 视口、视锥和 FOV
Unity Gizmos 绘制 Camera 的 视口.视锥和 FOV 一.目的 由于开发需要,需要绘制出Camera 的 视口.视锥和 FOV 以便于观察游戏物体与camera之间的一些关系,以利于 ...
- Jupyter官方神器:可视化 Debug 工具!
以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Noteboo ...
- Jupyter 官方神器:可视化 Debug 工具!
\ 转自 | Datawhale 以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Cod ...
- debug工具_Jupyter官方神器:可视化 Debug 工具!
以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Noteboo ...
- 实时可视化 Debug:VS Code 开源新工具,一键解析代码结构
来自机器之心 有没有一种更优雅的 DeBug 方式,以更简洁的信息快速帮我们找到代码的问题所在? 有的,它就是 VS Code 最新推出的可视化 DeBug,能以图的方式快速展示数据结构. 我们先看看 ...
- 终于来了!Python 编辑神器 Jupyter ,推出首款官方可视化 Debug 工具!
以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Noteboo ...
- Jupyter 福音: 官方可视化 Debug 工具!
以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Noteboo ...
最新文章
- mysql中查询表格属性
- 2018年【计算机视觉机器学习人工智能】国际重要会议汇总
- python客户端和服务端区别_Python socket 客户端和服务器端
- 第 28 小时项目管理过程实践和案例分析
- 我的docker随笔22:多域名同主机部署
- python pandas 数据处理
- Libev源码分析07:Linux下的eventfd简介
- python力导向图_力导向 (Force-directed) 布局算法绘图(布点)的简单实现
- linux设置ps1命令行
- rtsp开源视频播放器VideoLAN
- 三维点图和三维PCA图
- 软件造价评估最新模板免费下载(基于2022年度行业基准数据)
- 关系型数据库保证数据完整性和一致性的方法
- shaderToy初学笔记(一)(​转载自最简单的ShaderToy入门 - 笑脸渲染_亨利王的博客-CSDN博客_shadertoy)
- 学Linux有哪些就业方向?
- JAVA实现篮球计分计时器
- properties的配置信息出现\u7684\u6570\u636e\u5e93\u914d\u7f6e
- 四种解决Vue中重复点击相同路由控制台报错问题( Avoided redundant navigation to current location)
- 【IPF2020】浪潮集团执行总裁、首席科学家王恩东:智慧计算、源动新基建
- Android11.0默认打开允许安装未知源开关