Unity3D :重要的类 - Gizmos 和 Handles

news2024/10/7 16:20:21

推荐:将 NSDT场景编辑器加入你的3D工具链
3D工具集: NSDT简石数字孪生

重要的类 - Gizmos 和 Handles

Gizmos 和 Handles 类用于在 Scene 视图和 Game 视图绘制线条和形状以及交互式手柄和控件。这两个类共同提供了一种方法来扩展这些视图中显示的内容,并构建交互式工具以您喜欢的任何方式编辑项目。例如,您可以在游戏中围绕非玩家角色创建一个可拖动的圆圈辅助图标,代表它可听到或看到玩家的区域,而不必在 Inspector 中输入数字。

本页面提供了 Gizmos 和 Handles 类的简单概述。有关 Gizmos 和 Handles 类每个成员的完整文档和详尽参考,请参阅 Gizmos 和 Handles 脚本参考页面。

Gizmos

Gizmos 类允许您将线条、球体、立方体、图标、纹理和网格绘制到 Scene 视图中,在开发项目时用作调试、设置的辅助手段或工具。

例如,要在游戏对象周围绘制一个 10 个单位的黄色线框立方体,您可以使用以下代码:

using UnityEngine;
public class GizmosExample : MonoBehaviour
{
    void OnDrawGizmosSelected()
    {
        // 在变换位置绘制一个黄色立方体
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireCube(transform.position, new Vector3(10, 10, 10));
    }
}

这是将立方体放置在一个方向光游戏对象上时的外观。

A light GameObject with an extra script applied which draws a cube gizmo around its position

有关如何使用 Gizmos 的完整文档,请参阅 Gizmos 脚本参考页面。

Handles

Handles 类似于 Gizmos,但在交互性和操作方面提供了更多功能。Unity 本身提供的用于在 Scene 视图中操作项目的 3D 控件是 Gizmos 和 Handles 的组合。内置的 Handle GUI 有很多,如通过变换组件定位、缩放和旋转对象等熟悉的工具。不过,您可以自行定义 Handle GUI,以与自定义组件编辑器结合使用。此类 GUI 对于编辑以程序方式生成的场景内容、“不可见”项和相关对象的组(如路径点和位置标记)非常实用。

例如,以下是如何创建带有箭头手柄的圆弧区域,用于在 Scene 视图中修改 “shield area”:

using UnityEditor;
using UnityEngine;
using System.Collections;

//项目中应已包含了此类
public class WireArcExample : MonoBehaviour
{
    public float shieldArea;
}

// 使用附加到圆盘的 ScaleValueHandle 创建一个 180 度的线弧,
// 允许您修改 WireArcExample 中的 "shieldArea" 的值
[CustomEditor(typeof(WireArcExample))]
public class DrawWireArc : Editor
{
    void OnSceneGUI()
    {
        Handles.color = Color.red;
        WireArcExample myObj = (WireArcExample)target;
        Handles.DrawWireArc(myObj.transform.position, myObj.transform.up, -myObj.transform.right, 180, myObj.shieldArea);
        myObj.shieldArea = (float)Handles.ScaleValueHandle(myObj.shieldArea, myObj.transform.position + myObj.transform.forward * myObj.shieldArea, myObj.transform.rotation, 1, Handles.ConeHandleCap, 1);
    }
}

圆弧手柄和缩放手柄的示例

有关如何使用 Handles 的完整文档,请参阅 Handles 脚本参考页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/531295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生】Kubernetes 的组件与架构

文章目录 引语1、集群组件1.1 控制平面组件(Control Plane Components)1.2 Node 组件1.3 插件(Addons) 2、集群搭建总结 引语 在上篇文章,我们介绍了 Kubernetes 是什么,它能够对容器进行编排,…

实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放

实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放 新建一个窗口,我想在这个窗口上放一个QWidget,并且这个QWidget能够布满整个窗口,还可以随着随鼠标的拖动自动缩放 1、首先给大家介绍一个好用的组件库:qt-mat…

lighthouse尘埃粒子计数器3100/3350参数资料

​​SOLAIR 3350集成了我们的超长寿命激光二极管技术传感器,可生产业界比较长的激光二极管寿命20年以上(基于连续24/7运行)。使用一个新的,更轻的延长寿命的电池和外部交流适配器,SOLAIR 3350更加便携。SOLAIR 3350具有业界最好的用户界面(UI…

springboot+java拍卖竞拍网站系统idea

书画拍卖网站系统的设计与实现的设计思想如下: Spring Boot 是 Spring 家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程。也可以说 Spring Boot 能简化我们之前采用SSM(Spring MVC Spring MyBatis )框架进行…

10个学习Python的理由以及Python的优势有哪些?

Python的由来 Python的创始人是吉多范罗苏姆,1989年他在阿姆斯特丹的CWI工作,圣诞节期间,吉多范罗苏姆为了打发圣诞节的无聊,决定开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选择Python作为编程语言的名…

新星计划|记录安装Nodejs和HBuilderX搭建、部署微信小程序开发环境(一)

文章目录 1 前言2 注册小程序账号3 安装微信开发者工具4 安装Nodejs和HBuilderX4.1 windows用户安装Nodejs4.2 macos/linux用户安装Nodejs4.3 安装HBuilder X 5 创建项目5.1 新建一个项目5.2 进行基本配置 6 HBuilderX同步微信开发者工具6.1 打开服务端口6.2 调用微信开发者工具…

不能使用ChatGPT 试试基于2021模型的 Claude (原GPT团队二次创业产品)聊天机器人 更详细的解答

大家过程中遇到问题都可以私信我 注册方式,引用别人的:用不了chatgpt,试试Claude-Claude注册教程_大数据食铁兽的博客-CSDN博客 不过上面作者没有写坑,只支持少部分国家(我选用的日本,Claude官网会提示你…

【HarmonyOS】这些HarmonyOS应用开发的问题你都了解吗?

【关键字】 HTTP请求、requests exceeds 100、DNS域名解析、屏幕分辨率、ArkTS/JS 【问题描述1】 HTTP多次请求之后出现请求异常如何解决? 描述:接口是正常的,http多次请求出现提示“The requested has been canceled or the number of re…

mysql高阶语句与连接存储

文章目录 一、mysql高阶语句1.按照关键字进行排序2.多字段排序3.对查询的结果进行分组4.限制结果条目5.设置别名(alias----》as) 二、mysql连接与存储1.、连接查询2.存储过程 总结 一、mysql高阶语句 1.按照关键字进行排序 ​使用select语句可以将需要…

古鱼、恐龙和大众,相逢在百度百科的“彩虹桥”

提起孩子的天性,我们会想到什么? 首先是好奇心。 如果没有好奇心和求知欲作为动力,人类不可能产生那些给社会带来巨大价值的发明创造。对于个人来说,带着对万物的好奇,了解大千世界的丰富多彩,以后无论遇到…

Docker基础篇(上)

1、为什么Docker比VM快 2、帮助启动类命令 启动类命令 启动docker: systemctl start docker停止Docker: systemctl stop docker重启Docker: systemctl restart docker查看状态: systemctl status docker设置开机自启&#x…

【C++】20.异常

1.C语言处理错误方式 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到er…

【003】C++数据类型之整型类型(int)详解

C数据类型之整型变量详解 引言一、常量和变量二、整形常量三、整形变量的定义四、整型变量的初始化五、整型变量的声明5.1、C 变量的定义、变量的声明、变量的使用三者的关系 六、键盘(输入设备)给变量赋值七、案例:键盘获取两个int数值然后求…

win11+VS2019下配置PCL1.11.1

1、PCL安装配置 下载pcl-1.11.1-pdb-msvc2019-win64与PCL-1.11.1-AllInOne-msvc2019-win64.exe文件。以管理员身份运行PCL-1.11.1-AllInOne-msvc2019-win64.exe程序,截图如下: 安装过程中没有弹出OpenNI2的安装,但是要安装在3rdParty下&#…

快速了解toRaw和markRaw的用法

toRaw toRaw,将响应式对象(由 reactive定义的响应式)转换为普通对象。 作用:将一个由reactive生成的响应式对象转为普通对象。使用场景:用于读取响应式对象对应的普通对象,对这个普通对象的所有操作&…

mongo基本操作---文档的增删改查

4、CRUD mongo数据库和平时常见的关系型数据库一样,最基本的操作就是增删改查,唯一的区别就是叫法不一样 SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域…

韦东山Linux驱动入门实验班(1)hello驱动

前言 (1)学习韦东山老师的Linux,因为他讲的很精简,以至于很多人听不懂。接下来我讲介绍韦东山老师的驱动实验班的第一个Hello程序。 (2)注意,请先学习完视频再来看这个教程!本文仅供…

AD9680+JESD204B接口+FPGA FMC高速率数据采集板卡

板卡概述: 【FMC_XM155】 FMC_XM155 是一款基于 VITA57.1 标准的,实现 2 路 14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合 ADC 同步采集 FMC 子卡模 块。 该模块遵循 VITA57.1 规范,可直接与 FPGA 载卡配合使用,板 卡 ADC 器件采用…

CIE颜色空间LCh、Lab、XYZ介绍与转换关系(包含源码)

项目场景: 提示:在颜色科学中,LCh和Lab是比较常用的 LCh是由MATLAB计算出的数据,但是我所需要在Qt的q3dsurface绘制出这个切面,看了Qt官方Examples,墨西哥草帽算法的3D模型就是由XYZ组成的。所以我需要LC…

【c语言】组件化打包—静态库

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…