Unity 编辑器篇|(十一)Gizmos (全面总结 | 建议收藏)

news2024/9/28 15:32:23

目录

  • 1. 前言
  • 2 参数总览
  • 3 Gizmos绘制
    • 3.1 立方体:DrawCube
    • 3.2 视锥:DrawFrustum
    • 3.3 贴图:DrawGUITexture
    • 3.4 图标:DrawIcon
    • 3.5 线段:DrawLine
    • 3.6 网格:DrawMesh
    • 3.7 射线:DrawRay
    • 3.8 球体:DrawSphere
    • 3.9 Cube网格线:DrawWireCube
    • 3.10 Mesh网格线:DrawWireMesh
    • 3.11 Sphere网格线:DrawWireSphere

1. 前言

  • Gizmos能且只能在MonoBehaviour相关子类中,使用特定的函数调用,其中:
  • OnDrawGizmos() 在每帧调佣。所有在OnDrawGizmos中的渲染都是可见的。
  • OnDrawGizmosSelected() 仅在脚本附加的物体被选择时调用。

2 参数总览

静态函数描述
CalculateLOD确定场景视图中具有指定半径的指定位置处的小控件的适当细节级别。
DrawCube在中心绘制一个带有尺寸的实心框。
DrawFrustum使用当前设置的 Gizmos.matrix 绘制相机平截头体的位置和旋转。
DrawGUITexture在该场景中绘制一个纹理。
DrawIcon在 Scene 视图中的某个位置绘制一个图标。
DrawLine绘制一条从 from 开始到 to 的线。
DrawLineList在点对之间绘制多条线。
DrawLineStrip在提供的跨度中的每个点之间绘制一条线。
DrawMesh绘制一个网格。
DrawRay绘制一条从 from 开始到 from + direction 的射线。
DrawSphere使用 center 和 radius 绘制一个实心球体。
DrawWireCube使用 center 和 size 绘制一个线框盒体。
DrawWireMesh绘制一个线框网格。
DrawWireSphere使用 center 和 radius 绘制一个线框球体。

3 Gizmos绘制

3.1 立方体:DrawCube

  • 在中心绘制一个带有尺寸的实心框。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{
    private void OnDrawGizmos()
    {
        Gizmos.DrawCube(Vector3.zero, Vector3.one); //参数释义: 1.Cube中心点 2.Cube大小
    }
}

1

3.2 视锥:DrawFrustum

  • 使用当前设置的 Gizmos.matrix 绘制相机平截头体的位置和旋转。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{
    private void OnDrawGizmos()
    {
        Gizmos.DrawFrustum(Vector3.zero, 60, 300, 0.3f, 1.7f);
        //参数释义:1. 绘制中心 2. FOV角度 3. 远裁切平面 4. 近裁切平面 5. aspect 屏幕长宽比
    }
}

1

3.3 贴图:DrawGUITexture

  • 在该场景中绘制一个纹理。
  • 所选纹理是在 XY 平面(即,Z 坐标为零的平面)定义的“屏幕”上的 3D 空间中 绘制的。纹理矩形的值是以场景单位 给出的。可选边框值以场景单位指定从该矩形内的每条边缘嵌入; 在嵌入的矩形内绘制该纹理,并且向外重复边缘像素。当围绕主纹理的大型 背景区域的边缘为单色时,这是创建此区域的一种非常有用的快速方式。
  • 在结合直接指向该纹理的摄像机创建 GUI 背景时, 此函数会非常有用。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{
    public Texture myTexture;

    void OnDrawGizmosSelected()
    {
        Gizmos.DrawGUITexture(new Rect(0, 0, 10, 10), myTexture); //1.指定Rect 2.指定贴图
    }
}

1

3.4 图标:DrawIcon

  • 在 Scene 视图中的某个位置绘制一个图标。
  • 使用 name 参数指定该图标的图像文件名, 而 center 参数表示该图标在世界空间中的位置, allowScaling 参数确定是否允许缩放该图标。 应将该图像文件置于 Assets/Gizmos 文件夹中。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{
    public Texture myTexture;

    void OnDrawGizmosSelected()
    {
        Gizmos.DrawIcon(transform.position, "Light Gizmo.tiff", true);
    }
}

1

3.5 线段:DrawLine

  • 绘制一条从 from 开始到 to 的线。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{
    void OnDrawGizmosSelected()
    {
        Gizmos.DrawLine(Vector3.zero, Vector3.one);  //1.from(线段起点) 2.to(线段终点)
    }
}

1

3.6 网格:DrawMesh

  • 绘制一个网格。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{
    public Mesh mesh;

    void OnDrawGizmosSelected()
    {
        if (mesh != null)
        {
            Gizmos.DrawMesh(mesh, 0); //1. mesh 2.submeshIndex
        }
    }
}

1

3.7 射线:DrawRay

  • 绘制一条从 from 开始到 from + direction 的射线。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{

    void OnDrawGizmosSelected()
    {
        // 在对象前面绘制一条 2 单位长的红线
        Gizmos.color = Color.red;
        Vector3 direction = transform.TransformDirection(Vector3.forward) * 2;
        Gizmos.DrawRay(transform.position, direction);
    }
}

1

3.8 球体:DrawSphere

  • 使用 center 和 radius 绘制一个实心球体。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{
    void OnDrawGizmosSelected()
    {
        // 在变换位置绘制一个黄色球体
        Gizmos.color = Color.yellow;
        Gizmos.DrawSphere(transform.position, 1);
    }
}

1

3.9 Cube网格线:DrawWireCube

  • 使用 center 和 size 绘制一个线框盒体。
using UnityEngine;

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

1

3.10 Mesh网格线:DrawWireMesh

  • 使绘制一个线框网格。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{
    public Mesh mesh;
    void OnDrawGizmosSelected()
    {
        // 在变换位置画一个黄色立方体
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireMesh(mesh, Vector3.zero, Quaternion.identity, new Vector3(1, 1, 1));
    }
}

1

3.11 Sphere网格线:DrawWireSphere

  • 使用 center 和 radius 绘制一个线框球体。
using UnityEngine;

public class GizmosScript : MonoBehaviour
{
    void OnDrawGizmosSelected()
    {
        // 在变换位置画一个黄色立方体
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireSphere(transform.position,1);
    }
}

1

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

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

相关文章

PBR材质背光面太暗优化

图形学中漫反射光照遵循兰伯特光照模型,它的公式如下 其中: :漫反射光颜色 :入射光颜色 :材质的漫反射系数 :法线方向 :光源方向 由于背光面的法线方向和光源方向的点积为负数,因此…

为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据

文章目录 Slice vs Map:基本概念内存分配和性能Fasthttp 中的 SliceMap性能优化的深层原因HTTP Headers 的特性CPU 预加载特性 结论 Fasthttp 是一个高性能的 Golang HTTP 框架,它在设计上做了许多优化以提高性能。其中一个显著的设计选择是使用 slice 而…

golang 中使用 statik 将静态资源编译进二进制文件中

现在的很多程序都会提供一个 Dashboard 类似的页面用于查看程序状态并进行一些管理的功能,通常都不会很复杂,但是其中用到的图片和网页的一些静态资源,如果需要用户额外存放在一个目录,也不是很方便,如果能打包进程序发…

shell编程-3

文章目录 shell学习第三天while 循环第一天的小游戏练习: 编写抽同学回答问题的脚本要想让这个脚本永久有效如何知道两个文件里的内存一样?如何判断某个人已经抽过了 文本处理相关命令seqxargsuniqsorttrcutawkpastesplitcoljoin小结一下作业 小知识点写脚本的流程怎…

基于SkyEye仿真飞腾处理器:运行U-Boot并加载Phytium-FreeRTOS

仿真平台在帮助提升研发效率、加快产品面市时间上的作用已得到诸多验证,通过对处理器进行仿真来支持嵌入式系统及软件的虚拟化开发、测试和验证成为目前应用较为广泛的方法。天目全数字实时仿真软件SkyEye是一款基于可视化建模的硬件行为级仿真平台,在众…

找免费PPT素材、模板,就上这6个网站。

这6个PPT模板网站,免费下载,可商用,赶紧来下载。 1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYxMjky 菜鸟图库是一个设计、办公、媒体等素材非常齐全的网站,站内有几百万的庞大素材库,其中PP…

Python 异源mesh裁剪融合实现与优化

Python 异源mesh裁剪融合实现与优化 一、项目需求二、解决方案1. 代码2. 结果3. 耗时 三、优化探索0. 分析1. 在体素边界处进行裁剪2. 用mesh分块进行裁剪3. 用缓冲区的思路裁剪 一、项目需求 对mesh进行裁剪,但发现若非mesh是致密的,那么裁剪边会出现锯…

用通俗易懂的方式讲解:使用Llama-2、PgVector和LlamaIndex,构建大模型 RAG 全流程

近年来,大型语言模型(LLM)取得了显著的进步,然而大模型缺点之一是幻觉问题,即“一本正经的胡说八道”。其中RAG(Retrieval Augmented Generation,检索增强生成)是解决幻觉比较有效的…

Linux网络引导自动安装centos7

目录 一、部署PXE远程安装服务 1. 系统装机的三种引导方式 2. pxe概述 3. 实现过程 4. 搭建过程中服务介绍 4.1 TFTP服务 4.2 vsftp:安装系统镜像文件获取方式 4.3 syslinux 4.4 DHCP服务 5. 操作过程 二、实现Kickstart无人值守安装 1. 安装Kickstart图…

vue项目执行依赖安装(npm i或npm install )报ls-remote -h -t异常

从git拉取的vue项目执行依赖安装时一直报错, 报错如下图:首先,查看了node版本、npm配置的镜像地址均没找到解决办法。 在命令行中直接输入git发现提示于是从网上搜到了一个博文https://blog.csdn.net/weixin_49159364/article/details/118198…

ycsb压测mongodb

下载解压 https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-mongodb-binding-0.17.0.tar.gz tar -zxvf ycsb-mongodb-binding-0.17.0.tar.gzycsb提前已经在workload文件夹下准备好了几个压测场景分别对应workload[a:f] workloads/workloada 样例 …

【Linux】Linux系统编程——pwd命令

文章目录 1.命令概述2.命令格式3.常用选项4.相关描述5.参考示例 1.命令概述 pwd(Print Working Directory)命令用于显示用户当前工作目录的完整路径。这是一个常用的命令,帮助用户确定他们目前所在的目录位置。 2.命令格式 基本的 pwd 命令…

CVer从0入门NLP(二)———LSTM、ELMO、Transformer模型

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊专栏推荐:深度学习网络原理与实战 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍🏼、…

恒创科技:云存储和网盘怎么区分出来?

随着互联网的发展,数据存储已成为人们日常生活中不可或缺的一部分。云存储和网盘是经常被人们提及的两种存储方式,均通过网络进行数据存储和访问的服务。但,它们在技术实现、数据安全性、访问方式和数据容量等方面存在一定的差异。要区分&…

DAY04_Spring—Aop案例引入代理机制

目录 1 AOP1.1 AOP案例引入1.1.1 数据库事务说明 1.2 Spring实现事务控制1.2.1 代码结构如下1.2.2 编辑User1.2.3 编辑UserMapper/UserMapperImpl1.2.4 编辑UserService/UserServiceImpl1.2.5 编辑配置类1.2.6 编辑测试类 1.3 代码问题分析1.4 代理模式1.4.1 生活中代理案例1.4…

赋能客户不停歇,卓翼飞思职业院校无人智能装备师资培训圆满落幕

1月10日-15日,卓翼飞思在北京研发中心成功举办职业院校无人智能装备高级师资培训。来自湖南汽车工程职业学院(以下简称:湖南汽车职院)的10名师生&技术人员参与此次培训,针对无人智能集群应用开发进行系统性的培训及…

图卷积GCN实战基于网络结构图的网络表示学习实战

下面的是数据: from,to,cost 73,5,352.6 5,154,347.2 154,263,392.9 263,56,440.8 56,96,374.6 96,42,378.1 42,58,364.6 58,95,476.8 95,72,480.1 72,271,419.5 271,68,251.1 134,107,344.0 107,130,862.1 130,129,482.5 227,167,1425.7 167,298,415.7 298,209,42…

(vue)键值对结构数据展示

(vue)键值对结构数据展示 效果: 数据结构: this.formInline.algorithmText [{algorithmParameters: {参数名1: "111",参数名2: "121,122",},algorithmName: "算法1",algorithmId: 9,},{algorithmParameters: {参数名1:…

Android安卓读写低频EM4469卡源码

本示例使用的发卡器&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.…

Qt通用属性工具:随心定义,随时可见(三)

传送门: 《Qt通用属性工具:随心定义,随时可见(一)》 《Qt通用属性工具:随心定义,随时可见(二)》 《Qt通用属性工具:随心定义,随时可见(三)》 一、效果展示 本文将展示的是一个源于Qt但是却有些年头的Qt属性浏览工具。支持交互式编辑和查阅对象属性。 这可不就是妥…