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相关推荐

  1. Unity Gizmos可视化辅助工具

    所有gizmo绘制需要在脚本的OnDrawGizmos或OnDrawGizmosSelected里函数完成. OnDrawGizmos在每帧调用.所有在OnDrawGizmos中渲染的gizmos都是 ...

  2. 一种城市道路网络的随机生成方式(Unity中可视化)

    一种城市道路网络的随机生成方式(Unity中可视化) 1. 说在开头 2. 有限元网格划分 2.1. 什么是有限元 2.2. 前沿推进法/波前推进法(Advancing Front Technique ...

  3. Unity Gizmos 绘制 Camera 的 视口、视锥和 FOV

    Unity Gizmos 绘制 Camera 的 视口.视锥和 FOV 一.目的 由于开发需要,需要绘制出Camera 的 视口.视锥和 FOV 以便于观察游戏物体与camera之间的一些关系,以利于 ...

  4. Jupyter官方神器:可视化 Debug 工具!

    以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Noteboo ...

  5. Jupyter 官方神器:可视化 Debug 工具!

    \ 转自 | Datawhale 以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Cod ...

  6. debug工具_Jupyter官方神器:可视化 Debug 工具!

    以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Noteboo ...

  7. 实时可视化 Debug:VS Code 开源新工具,一键解析代码结构

    来自机器之心 有没有一种更优雅的 DeBug 方式,以更简洁的信息快速帮我们找到代码的问题所在? 有的,它就是 VS Code 最新推出的可视化 DeBug,能以图的方式快速展示数据结构. 我们先看看 ...

  8. 终于来了!Python 编辑神器 Jupyter ,推出首款官方可视化 Debug 工具!

    以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Noteboo ...

  9. Jupyter 福音: 官方可视化 Debug 工具!

    以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核. Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Noteboo ...

最新文章

  1. mysql中查询表格属性
  2. 2018年【计算机视觉机器学习人工智能】国际重要会议汇总
  3. python客户端和服务端区别_Python socket 客户端和服务器端
  4. 第 28 小时项目管理过程实践和案例分析
  5. 我的docker随笔22:多域名同主机部署
  6. python pandas 数据处理
  7. Libev源码分析07:Linux下的eventfd简介
  8. python力导向图_力导向 (Force-directed) 布局算法绘图(布点)的简单实现
  9. linux设置ps1命令行
  10. rtsp开源视频播放器VideoLAN
  11. 三维点图和三维PCA图
  12. 软件造价评估最新模板免费下载(基于2022年度行业基准数据)
  13. 关系型数据库保证数据完整性和一致性的方法
  14. shaderToy初学笔记(一)(​转载自最简单的ShaderToy入门 - 笑脸渲染_亨利王的博客-CSDN博客_shadertoy)
  15. 学Linux有哪些就业方向?
  16. JAVA实现篮球计分计时器
  17. properties的配置信息出现\u7684\u6570\u636e\u5e93\u914d\u7f6e
  18. 四种解决Vue中重复点击相同路由控制台报错问题( Avoided redundant navigation to current location)
  19. 【IPF2020】浪潮集团执行总裁、首席科学家王恩东:智慧计算、源动新基建
  20. Android11.0默认打开允许安装未知源开关

热门文章

  1. Linux utime和utimes函数
  2. 深度学习入门--斋藤康毅 总结
  3. 腾讯云游戏开发者技术沙龙,1月19日杭州站报名开启啦!
  4. 2022张宇考研基础30讲 线性代数 第五讲 特征向量和特征值
  5. 洛谷P2392 考前临时抱佛脚
  6. 统计学习方法笔记1--统计学习方法概论
  7. 做论文必须知道什么叫review
  8. 黑莓CEO海因斯对iPhone的评价是用户界面已5年没创新了
  9. spring-boot-2.0.3启动源码篇四 - run方法(三)之createApplicationContext
  10. 使用python绘制任意函数图像