unity editor 编辑器插件制作基础:五、物体在Scene窗口中编辑状态下的辅助显示,以及控制功能扩展OnDrawGizmos GizmoType
一 说明
该功能只能在编辑状态下运行,并只能在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相关推荐
- Unity教程之-制作闪亮的星星Star(三):给Star创建Unity Editor编辑器
继续上篇文章<Unity教程之-制作闪亮的星星Star(二):创建Shader>,本篇我们来讲解 unity star editor的创建! 建立编辑器 Creating the Insp ...
- 【Unity Editor编辑器】 代码获取project面板选中资源路径(自定义右键菜单)
在Unity编辑器中,如果想要快捷的获取到Project面板中选中文件的路径,比如我们需要用Resources.Load的方式加载一个prefab,就需要知道这个prefab的路径,或者在自定义窗口中 ...
- Unity3D 入门:Unity Editor 编辑器常用快捷键
本文为 Unity3D 入门小伙伴整理 Unity 编辑器中的常用快捷键. 本文内容 调节工具 视图调节 窗口调整 进入退出播放模式 所有快捷键 调节工具 Unity 编辑器左上角的一组按钮,正好也对 ...
- 【Unity】Obi插件系列(五)—— 约束
距离约束 距离约束将成对的粒子连接在一起,迫使它们之间保持一定的距离(我们将这个距离称为约束的 "休息长度").Obi为你的布网的每一个边缘,或者为你的绳索的每一段创建一个拉伸约束 ...
- Unity Editor 编辑器扩展 五 EditorGUI
目录 创建一个窗口添加简单控件 制作一个可以渐入渐出的窗口控件 最后做一个比较炫酷的窗口 创建一个窗口,添加简单控件 在Editor创建脚本GUIWindow1如下,添加一些简单的控件,体验一下他们的 ...
- Unity游戏Mod/插件制作教程06 - Harmony补丁基础
前言 通过之前的教程,我们已经知道如何编写基本的插件,如果你有C#和Unity的基础,这个时候已经可以做出一些功能了,比如通过按键修改游戏数据之类的.但是,这有很大的局限性,因为通常情况下,我们并不想 ...
- Unity音游插件 Koreographer 基础使用说明
在网上找了很久Koreographer的基础使用说明,就那一篇文章,抄来抄去的,介绍的也不是很详细.siki学院有讲解课程,但没时间去仔细看,最后连看带摸索的,了解了一些基本操作,分享一下. 文章附带 ...
- Unity游戏Mod/插件制作教程05 - 插件实例2: 简单功能实现
这一次的教程进行一个小小的功能实现,完整的制作一个插件.以Mirror这个游戏为例,插件的目标是当玩家按下空格时,有一定概率为玩家增加金钱,或者扣除玩家金钱.概率.增加的金钱.扣除的金钱都由配置文件决 ...
- Unity游戏Mod/插件制作教程01 - BepInEx的安装和使用
前言 本章节为没有使用过BepInEx的同学进行BepInEx的安装和使用方面的介绍,如果你之前已经使用过并了解如何使用,可以直接跳过本章节. BepInEx下载 BepInEx的Github链接 h ...
最新文章
- 史上最烂的项目:苦撑 12 年,600 多万行代码!
- CSS基础学习-5.CSS属性_字体文本文本装饰
- android 工作 绝望,我的人生绝望手游
- 图说机房空气焓湿处理过程
- c++和opengl实现gis_从零开始的图形学学习(零):一切的开始 —— 自建OpenGL开发框架
- UOJ#218. 【UNR #1】火车管理 线段树 主席树
- qt读取txt文件内容
- 单片机c语言数字频率计课程设计,单片机数字频率计设计和调试 课程设计论文...
- 【PHP】【PHP100改进系列】上传图片水印、缩略图、图片大小预处理类
- Pr效果:视频过渡效果
- 乌班图 修改ip_unbuntu(乌班图)虚拟机修改ip地址NAT模式
- 中美线径对照表_线径与线号对照表
- 小白的破解WiFi之路1----VMware、kali安装
- 无限循环 for(;;) 与 while(true) 的区别
- 基于android的影音设计,基于Android系统的影音播放器设 - 音响技术 - 电子发烧友网...
- 黑苹果2k显示器开启hidpi_黑苹果开启硬件加速
- 好雨云使用OKRs做绩效管理
- 怎样进行两台电脑之间的数据传输?
- 汽车防抱死制动系统(ABS)技术
- yolo回归型的物体检测
热门文章
- 【转】如何保护自己的QQ号
- 原神服务器维护后抽奖池会更新吗,原神抽奖记录会刷新吗
- CANOPEN使用心得1-cia301、cia402简单提要
- IKA文档文件管理工具(文档内文全文搜索+自动识别内文标签分类+目录管理)-桌面版(原创)
- 协同控制笔记1——基础介绍及部分定义定理
- 百日完成国产数据库opengausss的开源任务--openGuass极简版3.0.0安装教程
- [转载]奥巴马再次当选美国总统演讲-2012年11月7日(视频)
- (新手入门)AS3基于starling引擎移动开发之入门介绍
- java连接sql2008_Java连接SqlServer2008数据库
- (附源码)springboot高校机房自动排课系统 毕业设计 211004