一 说明

该功能只能在编辑状态下运行,并只能在scene窗口中显示。
脚本必须继承MonoBehaviour ,并且引入UnityEngine和UnityEditor库
可以选择相关方法,在鼠标选择父物体或子物体的范围内执行,也可以设置被选择,或不被选择才执行,可以用于显示标签、辅助线等用途

大量可直接调用的scene组件都可在这里找到 https://docs.unity3d.com/ScriptReference/Handles.html

1.1 引用库

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

1.2 脚本结构

需要在指定周期或是指定标签注明的方法中绘制才会在scene状态下显示

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor; // 需引用该库
public class MapCreator : MonoBehaviour // 普通脚本,并非edtor
{// 普通方法运行 可以直接使用类属性//编辑器状态下每帧调用void OnDrawGizmos() {}// 编辑器状态下 物体被选中的时每帧调用void OnDrawGizmosSelected() {}//静态方法 需要使用静态类属性// 当物体active状态为可见时每帧调用[DrawGizmo(GizmoType.Active)]static void f1(Transform transform, GizmoType gizmoType) {}// 当物体或其子物体被选中时每帧调用[DrawGizmo(GizmoType.InSelectionHierarchy)]static void f2(Transform transform, GizmoType gizmoType) {}// 当前物体没被选中时每帧调用[DrawGizmo(GizmoType.NonSelected)]static void f3(Transform transform, GizmoType gizmoType) {}// 当物体或其子物体都没被选中时每帧调用[DrawGizmo(GizmoType.NotInSelectionHierarchy)]static void f4(Transform transform, GizmoType gizmoType) {}//允许gizmo在编辑器中被选中[DrawGizmo(GizmoType.Pickable)]static void f5(Transform transform, GizmoType gizmoType) {}// 当前物体被选中时每帧调用[DrawGizmo(GizmoType.Selected)]static void f6(Transform transform, GizmoType gizmoType) {}
}

二 实现

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor; // 需引用该库
public class MapCreator : MonoBehaviour // 普通脚本,并非edtor
{public MapBlockType currentMapBlockType = MapBlockType.Ground;//绘制图形void OnDrawGizmos() {//绘制cube边框Gizmos.color = Color.black;//当前物体必须有Renderer组件 用于绘制Gizmos.DrawWireCube(GetComponent<Renderer>().bounds.center, GetComponent<Renderer>().bounds.size);//在物体上方绘制一条直线Gizmos.color = Color.green;Gizmos.DrawLine(transform.position, transform.position + transform.up * 3);}// 绘制图形void OnDrawGizmosSelected() {Gizmos.color = Color.red;Gizmos.DrawWireCube(GetComponent<Renderer>().bounds.center, GetComponent<Renderer>().bounds.size);}// 绘制标签[DrawGizmo(GizmoType.NonSelected)]static void DrawGameObjectName(Transform transform, GizmoType gizmoType) {Handles.Label(transform.position, transform.gameObject.name);}// 绘制标签[DrawGizmo(GizmoType.Selected | GizmoType.Active)]static void DrawGameObjectName1(Transform transform, GizmoType gizmoType) {Handles.Label(transform.position, transform.gameObject.name);}
}

unity editor 编辑器插件制作基础:五、物体在Scene窗口中编辑状态下的辅助显示,以及控制功能扩展OnDrawGizmos GizmoType相关推荐

  1. Unity教程之-制作闪亮的星星Star(三):给Star创建Unity Editor编辑器

    继续上篇文章<Unity教程之-制作闪亮的星星Star(二):创建Shader>,本篇我们来讲解 unity star editor的创建! 建立编辑器 Creating the Insp ...

  2. 【Unity Editor编辑器】 代码获取project面板选中资源路径(自定义右键菜单)

    在Unity编辑器中,如果想要快捷的获取到Project面板中选中文件的路径,比如我们需要用Resources.Load的方式加载一个prefab,就需要知道这个prefab的路径,或者在自定义窗口中 ...

  3. Unity3D 入门:Unity Editor 编辑器常用快捷键

    本文为 Unity3D 入门小伙伴整理 Unity 编辑器中的常用快捷键. 本文内容 调节工具 视图调节 窗口调整 进入退出播放模式 所有快捷键 调节工具 Unity 编辑器左上角的一组按钮,正好也对 ...

  4. 【Unity】Obi插件系列(五)—— 约束

    距离约束 距离约束将成对的粒子连接在一起,迫使它们之间保持一定的距离(我们将这个距离称为约束的 "休息长度").Obi为你的布网的每一个边缘,或者为你的绳索的每一段创建一个拉伸约束 ...

  5. Unity Editor 编辑器扩展 五 EditorGUI

    目录 创建一个窗口添加简单控件 制作一个可以渐入渐出的窗口控件 最后做一个比较炫酷的窗口 创建一个窗口,添加简单控件 在Editor创建脚本GUIWindow1如下,添加一些简单的控件,体验一下他们的 ...

  6. Unity游戏Mod/插件制作教程06 - Harmony补丁基础

    前言 通过之前的教程,我们已经知道如何编写基本的插件,如果你有C#和Unity的基础,这个时候已经可以做出一些功能了,比如通过按键修改游戏数据之类的.但是,这有很大的局限性,因为通常情况下,我们并不想 ...

  7. Unity音游插件 Koreographer 基础使用说明

    在网上找了很久Koreographer的基础使用说明,就那一篇文章,抄来抄去的,介绍的也不是很详细.siki学院有讲解课程,但没时间去仔细看,最后连看带摸索的,了解了一些基本操作,分享一下. 文章附带 ...

  8. Unity游戏Mod/插件制作教程05 - 插件实例2: 简单功能实现

    这一次的教程进行一个小小的功能实现,完整的制作一个插件.以Mirror这个游戏为例,插件的目标是当玩家按下空格时,有一定概率为玩家增加金钱,或者扣除玩家金钱.概率.增加的金钱.扣除的金钱都由配置文件决 ...

  9. Unity游戏Mod/插件制作教程01 - BepInEx的安装和使用

    前言 本章节为没有使用过BepInEx的同学进行BepInEx的安装和使用方面的介绍,如果你之前已经使用过并了解如何使用,可以直接跳过本章节. BepInEx下载 BepInEx的Github链接 h ...

最新文章

  1. 史上最烂的项目:苦撑 12 年,600 多万行代码!
  2. CSS基础学习-5.CSS属性_字体文本文本装饰
  3. android 工作 绝望,我的人生绝望手游
  4. 图说机房空气焓湿处理过程
  5. c++和opengl实现gis_从零开始的图形学学习(零):一切的开始 —— 自建OpenGL开发框架
  6. UOJ#218. 【UNR #1】火车管理 线段树 主席树
  7. qt读取txt文件内容
  8. 单片机c语言数字频率计课程设计,单片机数字频率计设计和调试 课程设计论文...
  9. 【PHP】【PHP100改进系列】上传图片水印、缩略图、图片大小预处理类
  10. Pr效果:视频过渡效果
  11. 乌班图 修改ip_unbuntu(乌班图)虚拟机修改ip地址NAT模式
  12. 中美线径对照表_线径与线号对照表
  13. 小白的破解WiFi之路1----VMware、kali安装
  14. 无限循环 for(;;) 与 while(true) 的区别
  15. 基于android的影音设计,基于Android系统的影音播放器设 - 音响技术 - 电子发烧友网...
  16. 黑苹果2k显示器开启hidpi_黑苹果开启硬件加速
  17. 好雨云使用OKRs做绩效管理
  18. 怎样进行两台电脑之间的数据传输?
  19. 汽车防抱死制动系统(ABS)技术
  20. yolo回归型的物体检测

热门文章

  1. 【转】如何保护自己的QQ号
  2. 原神服务器维护后抽奖池会更新吗,原神抽奖记录会刷新吗
  3. CANOPEN使用心得1-cia301、cia402简单提要
  4. IKA文档文件管理工具(文档内文全文搜索+自动识别内文标签分类+目录管理)-桌面版(原创)
  5. 协同控制笔记1——基础介绍及部分定义定理
  6. 百日完成国产数据库opengausss的开源任务--openGuass极简版3.0.0安装教程
  7. [转载]奥巴马再次当选美国总统演讲-2012年11月7日(视频)
  8. (新手入门)AS3基于starling引擎移动开发之入门介绍
  9. java连接sql2008_Java连接SqlServer2008数据库
  10. (附源码)springboot高校机房自动排课系统 毕业设计 211004