Handles

Scene视图中的自定义 3D GUI 控件和绘制操作。

UnityEditor.Handles - Unity 脚本 APIhttps://docs.unity.cn/cn/current/ScriptReference/Handles.html

1.添加一个脚本到场景中的物体上(HandleExample.cs)

using UnityEngine;[ExecuteInEditMode]
public class HandleExample : MonoBehaviour
{public float shieldArea = 5.0f;
}

2.添加个脚本继承Editor,在OnSceneGUI绘制(HandleExampleEditor.cs)

using UnityEditor;
using UnityEngine;[CustomEditor(typeof(HandleExample))]
class HandleExampleEditor : Editor
{protected virtual void OnSceneGUI(){HandleExample handleExample = (HandleExample)target;if (handleExample == null){return;}Handles.color = Color.yellow;GUIStyle style = new GUIStyle();style.normal.textColor = Color.green;Vector3 position = handleExample.transform.position + Vector3.up * 2f;string posString = position.ToString();//handle文本绘制Handles.Label(position,posString + "\nShieldArea: " +handleExample.shieldArea.ToString(),style);//可以使用IMGUIHandles.BeginGUI();if (GUILayout.Button("Reset Area", GUILayout.Width(100))){handleExample.shieldArea = 5;}Handles.EndGUI();//绘制弧线Handles.DrawWireArc(handleExample.transform.position,handleExample.transform.up,-handleExample.transform.right,180,handleExample.shieldArea);//绘制改变shieldArea的锥形点handleExample.shieldArea =Handles.ScaleValueHandle(handleExample.shieldArea,handleExample.transform.position + handleExample.transform.forward * handleExample.shieldArea,handleExample.transform.rotation,1, Handles.ConeHandleCap, 1);}
}

EditorTool

使用此类可实现自定义编辑器工具。

EditorTools.EditorTool - Unity 脚本 APIhttps://docs.unity.cn/cn/current/ScriptReference/EditorTools.EditorTool.html 1.添加[EditorTool("Name")]特性

2.继承EditorTool

3.在OnToolGUI使用Hanles的API绘制

using System;
using UnityEngine;
using UnityEditor;
using UnityEditor.EditorTools;[EditorTool("Move Right")]
class PlatformTool : EditorTool
{public override void OnToolGUI(EditorWindow window){window.ShowNotification(new GUIContent("Move Right"));EditorGUI.BeginChangeCheck();Vector3 position = Tools.handlePosition;using (new Handles.DrawingScope(Color.green)){position = Handles.Slider(position, Vector3.right);}//如果在调用 EditorGUI.BeginChangeCheck 后 GUI 状态发生更改,则返回 true,否则返回 false。if (EditorGUI.EndChangeCheck()){Vector3 delta = position - Tools.handlePosition;Undo.RecordObjects(Selection.transforms, "Move Right");foreach (var transform in Selection.transforms)transform.position += delta;}}
}

编辑器免费课程:

独立游戏《Unity打造关卡编辑器》Unity 独立游戏 关卡编辑器https://bycwedu.vipwan.cn/promotion_channels/72762192

Unity编辑器拓展(Handles/EditorTool)相关推荐

  1. unity编辑器拓展整理(主要是siki的视频教程)

    编辑器拓展 https://blog.csdn.net/zxl321365712/article/details/80080586 蛮牛上一个详细的博客 http://www.manew.com/th ...

  2. Unity编辑器拓展之三:拓展Unity的Hierarchy面板

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 正文 效果图: 上图中在Hierarchy右侧绘制了Toggle,Label,以及自定义的texture和Unity原声的T ...

  3. Unity编辑器拓展-写一个查看当前所有PlayerPrefsKey的窗口

    创建一个PlayerPrefsKey查看器 效果图 前言 开发 一.获取数据 目录结构 二.开发编辑器窗口 效果图 思路 一.绘制搜索栏 二.定义PlayerPrefs数据结构体 三.根据搜索框过滤数 ...

  4. Unity编辑器拓展(Gizmos)

    Gizmos 辅助图标用于协助在 Scene 视图中进行视觉调试或设置. 所有辅助图标绘图都必须在此脚本的 OnDrawGizmos 或 OnDrawGizmosSelected 函数中进行. Uni ...

  5. Unity编辑器拓展之六:利用反射打开Unity Preferences Window

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 如何利用反射打开Unity Preferences Window Unity Preferences Window如下图所示 ...

  6. Unity编辑器拓展之五:修改脚本icon

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 正文 Unity修改脚本在Project面板中显示的icon有两种方法, 先看示意图: 方法1:修改脚本的meta文件 脚本 ...

  7. Unity编辑器拓展(一)-MenuItem的使用

    MenuItem的使用 一.参数介绍 二.验证函数 三.优先级 四.快捷键 五.在Hierarchy层级窗口增加右键菜单 六.在Assets资源窗口增加右键菜单 一.参数介绍 MenuItem是一个特 ...

  8. Unity编辑器拓展之二十四:基于Unity Node Editor、ScriptableObject的配置化新手引导系统

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 本文主要介绍根据一款Node Editor库开发的新手引导系统 git地址如下: https://github.com/lu ...

  9. unity编辑器拓展十一——将两张RGB图合并成一张

    游戏角色shader,包含的东西比较多,还要做到动态合并,程序那边希望贴图经可能少,而我们美术用了两张图,一张图的RGB是高光.流光.自发光,另外一张图的RGB是不同区域的偏色,其实每个通道的一整张贴 ...

最新文章

  1. SIMILAR:现实场景中基于子模块信息度量的主动学习
  2. 在线编译工具 Jenkins Hudson 的关系
  3. bootstrap轮播图怎么居中
  4. python消息队列celery_消息队列(kafka/nsq等)与任务队列(celery/ytask等)到底有什么不同?...
  5. matlab撤销上一步命令_CAD快速入门技巧:CAD软件中撤销操作的方法汇总
  6. Hadoop集群部署模型纵览1
  7. LeetCode 215. 数组中的第K个最大元素(快速排序)
  8. php输出楼层号,ZBlog开发中实现评论楼层号正确输出的具体方法代码
  9. J.U.C - 其它组件
  10. mysql 重置密码 win_window下重置mysql用户密码
  11. 信息安全软考——第四章 网络安全体系与网络安全模型 知识点记录
  12. java语言jsp技术_JavaWeb:JSP技术基础
  13. 【渝粤教育】广东开放大学 动画运动规律 形成性考核 (25)
  14. 安庆集团-冲刺日志(第八天)
  15. 源码分析 --- MapReduce如何确定任务的SplitSize、Splits、Map、Reduce
  16. 土豆皮,蒜苗长短,胡萝卜
  17. IMU让无人机控制变得更轻松
  18. nginx反向代理非80端口/nginx反代非80端口
  19. 韩剧《天空之城》推荐
  20. 【单片机】08数码管

热门文章

  1. linux 打印4 6照片,linux_2.6.30.4_Makefile_1--显示打印信息
  2. 写给想要开始跑步的人
  3. Neyman-Person
  4. oracle数据库中的虚拟表,Oracle10g中的虚拟专用数据库(VPD)
  5. Uigg - 免费开源、灵活的高颜值前端 UI 工具套件,专为设计师打造
  6. 飞瞳引擎™AI集装箱识别检测检测云服务箱况检测,正常集装箱信息识别率99.98%以上,实时返回识别结果,集装箱信息识别云服务免费
  7. python获取人民币汇率数据
  8. 南京网预赛 11 BY bly
  9. Bootstrap框架: 模拟小风车科技官网
  10. 企业领袖必读的10本管理学书籍