首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Unity Editor -使用switch case显示两点之间的GUI线

Unity Editor是Unity游戏引擎的开发环境,用于创建、编辑和调试游戏。它提供了一个可视化的界面,使开发者能够轻松地构建游戏场景、添加游戏对象、设置物理属性、编写脚本等。

在Unity Editor中,使用switch case语句可以显示两点之间的GUI线。具体步骤如下:

  1. 创建一个新的C#脚本,命名为"LineDrawer"。
  2. 在脚本中定义两个Vector3类型的变量,分别表示起点和终点的坐标。
  3. 在OnGUI()函数中使用switch case语句,根据不同的事件类型绘制GUI线。
  4. 在每个case中,使用Handles.DrawLine()函数绘制起点和终点之间的线段。

以下是示例代码:

代码语言:csharp
复制
using UnityEngine;

public class LineDrawer : MonoBehaviour
{
    public Vector3 startPoint;
    public Vector3 endPoint;

    private void OnGUI()
    {
        Event e = Event.current;
        switch (e.type)
        {
            case EventType.MouseDown:
                startPoint = e.mousePosition;
                break;
            case EventType.MouseUp:
                endPoint = e.mousePosition;
                break;
        }

        Handles.DrawLine(startPoint, endPoint);
    }
}

这段代码创建了一个LineDrawer脚本,通过监听鼠标按下和释放事件,获取起点和终点的坐标,并使用Handles.DrawLine()函数在Unity Editor中绘制起点和终点之间的线段。

在Unity Editor中使用该脚本的步骤如下:

  1. 将脚本挂载到一个游戏对象上。
  2. 在Scene视图中点击并拖动鼠标,即可绘制出起点和终点之间的线段。

这种方法可以用于在Unity Editor中快速绘制线段,方便开发者进行场景布局和调试。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Unity Metaverse(六)、关于Avatar换装系统示例工程

简介 鉴于之前发了一篇关于Avatar换装系统解决方案内容后,有朋友反馈对此比较感兴趣,希望能提供源码,因此我专门整理了一个示例项目,已经放在Github上开源,地址:Unity Avatar换装系统示例工程...发型、眼镜、胡须 配置表 各配置表创建菜单如下: 创建配置表 其中Outlook Config,即衣服配置表涉及内容最多,依次手动拖拽赋值较为繁琐,因此使用编辑器DragAndDrop类为其增加了快速拖拽赋值功能...: 快速拖拽赋值 实现并不复杂,因为之前我们使用Avatar Clothes Collector来扒衣服资源时候已经为资源命好名了,因此只需要根据名称去匹配指定资源即可,代码如下: using System...; using System.Linq; using UnityEngine; using System.Collections.Generic; #if UNITY_EDITOR using UnityEditor...ScriptableObject { public List data = new List(0); } #if UNITY_EDITOR

1.1K10

Unity 使用ScriptableObject创作问答系统数据配置

Unity使用ScriptableObject允许我们创建配置文件并作为UnityAsset资产使用,无需像Json、XML等文件需要通过IO读取并反序列化成为我们需要数据结构,其弊端是不可以像...Json等配置文件可以在外部进行修改,在此不对其做详细介绍,下面使用ScriptableObject创作一个用于配置问答系统数据资产,先看效果: 配置文件中包含五种题型:判断、单选、多选、填空...单选和多选题答案均为int类型字段,为了使int值对应A、B、C......Z字符,定义一个Alphabet字母表类, 例如Alphabet.Values[0]返回便是字符A namespace SK.Framework...System.Collections.Generic; #if UNITY_EDITOR using UnityEditor; #endif namespace SK.Framework {...m.Sequence == sequence) as T; default: return null; } } } #if UNITY_EDITOR

64220
  • Unity基础(15)-Application与SceneManager类

    (只读).返回路径为相对路径,不同游戏平台数据文件保存路径不同,Editor中就是项目的Assets文件夹路径,通过这个路径可以访问项目中任何文件夹中资源,但是在移动端它是完全没用。...WWW类加载,但要注意各个平台路径需要加访问名称,例如Android平台路径前要加"jar:file://",其他平台使用"file://"。...,这个函数将从不同线程被调用,注意:你只有你知道你在做什么时才能使用这个函数,否则使用Application.RegisterLogCallback。...因为Loading场景包含资源较少,所以加载速度快。 在加载主场景时候一般会在Loading界面中显示一个进度条来告知玩家当前加载进度。...通过Unity提供Coroutine机制,我们可以方便在每一帧结束后调用SetLoadingPercentage函数来更新界面中显示进度条数值。

    1.4K20

    Unity 编辑器开发实战【Custom Editor】- AudioDatabase Editor 音频库编辑器

    : 首先继承自Editor类,使用CustomEditorAttribute,并重写OnInspectorGUI方法以实现自定义编辑器。...即当我们修改音频库名称后,使用Ctrl+Z可以撤销修改操作,撤销后使用Ctrl+Y可以恢复撤销内容。...EditorGUILayout类中BeginFadeGroup和EndFadeGroup方法来实现,可以使用一个bool类型字段来实现简单折叠,不过我们这里用是AnimBool,它可以实现折叠时动画效果...Unity中内置图标,如何查看Unity内置图标在以往文章中有介绍:六、编辑器开发之GUIIcon 有了图标的名称后,通过EditorGUIUtility类中IconContent方法进行实现...//使用音频名称绘制Button按钮 点击后使用PingObject方法定位该音频资源 Color colorCache = GUI.color; GUI.color = currentIndex =

    83820

    Unity編輯器案列

    serializedObject来修改参数的话Unity会自动有各种帮助函数,例如自动添加Undo功能 如果直接修改参数的话,需要使用EditorUtility.SetDirty来告诉Unity需要保存数据...BeginChangeCheck()和EndChangeCheck()会检测它们之间GUI有没有被修改,如果修改了的话可以据此修改参数 Undo.RecordObject可以为下一步修改添加Undo...,通过使用ReorderableList来实现,以及它各个回调函数 ?...using UnityEngine; using UnityEditor; // UnityEditorInternal是Unity内部使用、还未开放给用用户一些库,可能有一些很有意思类,例如ReorderableList...,当我们选择同一种类型多个组件时,我们自定义面板是可以支持同时修改所有选中组件 // 如果我们在修改参数时使用是serializedObject,那么这个功能Unity会自动完成 // 但如果我们是直接使用

    1.4K20

    使用 Unity 来实现 iOS 原生弹框

    目标 本文主要目标是帮助你使用 Unity 创建 iOS 原生弹框。 你会得到最终效果如下图 ? ? ? ? 你想要遵循 iOS 标准来显示弹框吗?...你想要移除额外图形来减小你构建应用大小吗? 你想要从 Unity显示原生弹框来提高用户体验吗? 如果你有这些疑虑,那么现在你来对地方了。...在这篇博客中,我将使用 Unity 创建 iOS 原生弹框。 第一步 介绍 弹框是一种小遮挡或者提示用户做一些操作警告信息。...UNITY_EDITOR) || DEBUG_MODE _TAG_DismissCurrentAlert(); #endif } } 第五步 为不同弹框创建脚本 正如我上面所提到,我们将创建三种类型弹框...UnitySendMessage() 向 unity 发送一条消息,然后我们使用游戏物体名字作为参数。

    2K30

    Unity基础(4)-资源管理知识(1)

    将脚本放在这个文件夹里,就可以用C#脚本来访问js脚本或其他语言脚本。 Editor 文件夹 Editor命名文件夹允许其中脚本访问Unity EditorAPI。...如果脚本中使用了在UnityEditor命名空间中类或方法,它必须被放在名为Editor文件夹中。Editor文件夹中脚本不会在build时被包含。 在项目中可以有多个Editor文件夹。...材质有两种:(物理材质统称为一种) 贴图材质(Materials): 通过材质可以让物体显示出贴图等效果 物理材质(Physic Material): 用于设置物体之间摩擦力/阻力 2D物理材质(...法线贴图用于法线贴图着色器,使低多边形模型看起来有更多细节。这也是低模展示高模细节一种手段 ? 法线贴图 EditorGUI and legacy GUI : 编辑GUI和传统GUI ?...类似的,天空盒(Skybox )如何在背景显示遥远风景。内置反射(Reflective )着色器在Unity使用立方图(Cubemap),以显示反射。 ? Cubemap ?

    2.4K20

    unity3d 入门

    编辑器在节点中打开才能编辑,场景中可以预览) 动画之间通过transition转换(转换控制时间轴),通过参数判断状态转换 TimeLine:时间轴,多元素 元素 节点,Gameobject,使用...editor component可见 GUI,通过unityOngui事件函数 UGUI,canvas元素上拖放gui UWidget,unity插件封装了flutter高效app开发模式 unity.../2018.4.13f1/Editor/Data/Documentation/en/ScriptReference/MonoBehaviour.html 协程设计 unity中为了增加稳定性,使用协程实现异步...,yield break终止协程(内部退出) 协程调用和帧率相关 射线检测 Physics.Raycast 插件 Editor,MenuItem等属性设置插件显示方式 Script/Editor目录下文件...Unity使用System.IO中DirectoryInfo打包会找不到路径 android目录 application.datapath unity资源目录,权限导致写入数据容易失败 temporaryCachePath

    3.6K20

    unity3d 入门

    编辑器在节点中打开才能编辑,场景中可以预览) 动画之间通过transition转换(转换控制时间轴),通过参数判断状态转换 TimeLine:时间轴,多元素 元素 节点,Gameobject,使用transform...可见 GUI,通过unityOngui事件函数 UGUI,canvas元素上拖放gui UWidget,unity插件封装了flutter高效app开发模式 unity界面OnGUI、NGUI下载插件.../2018.4.13f1/Editor/Data/Documentation/en/ScriptReference/MonoBehaviour.html 协程设计 unity中为了增加稳定性,使用协程实现异步...,yield break终止协程(内部退出) 协程调用和帧率相关 射线检测 Physics.Raycast 插件 Editor,MenuItem等属性设置插件显示方式 Script/Editor目录下文件...Unity使用System.IO中DirectoryInfo打包会找不到路径 android目录 application.datapath unity资源目录,权限导致写入数据容易失败 temporaryCachePath

    2.8K10

    Unity3D Editor自定义窗口、自定义组件学习分享

    ,如下所示: ---- Unity Editor 基础篇(二):自定义 Inspector 面板 最终效果 准备工作 还是使用上一篇 Unity 工程,然后在 Scripts 文件夹里创建一个新...3、Space - 空间(空行) 使用 EditorGUILayout.Space() 可在两个元素之间空出一行。...步骤: 1.GUILayout.Space(10),这个有说过,让两个元素之间空十个像素之间距离 2.GUI.skin.label.fontSize 、GUI.skin.label.alignment...好了,让我们回到 Unity 中,看看发生了什么变化。 Perfect!Persion类中属性成功显示在了Inspector面板上。...我们使用该枚举为value获取相对应类型值,然后使用一个Label在Inspector面板中绘制出来(\t为制表符,为了美化显示)。

    1.8K22

    Unity3D】Android 打包 ③ ( Android 工程设置 | 打包 Apk 安装文件 | 配置项细节 | 运行效果 )

    | 安装 Unity3D 编辑器 ) 博客 , 在安装 Unity 编辑器同时 , 将 Android 编译支持 和 iOS 编译支持 都一块下载了 ; Android 相关编译支持软件 , 都安装在了...Unity 编辑器安装目录\Editor\Data\PlaybackEngines\AndroidPlayer 目录中 , 以本机为例 , 安装在了 Y:\001_DevelopTools\029_...Unity\Editor\2020.3.41f1c1\Editor\Data\PlaybackEngines\AndroidPlayer 目录中 ; 如果在安装 Unity 编辑器时没有安装 , 可以选择在...Unity Hub 中继续进行安装 ; 二、 打包 Apk 安装文件 ---- 在工程根目录中 , 新建 Build 目录 , 用于存放打包后 Android 应用 ; 如果不显示 Build 按钮..., 显示Switch Platform , 先点击该按钮 , 然后就会出现 Build 按钮 ; 点击 Build 按钮 , 选择编译后 apk 路径 ; 编译完成后 , 就会在指定目录生成

    1K20

    Unity Editor 基础篇(三):自定义窗口

    本文链接:https://blog.csdn.net/CJB_King/article/details/72858266 Unity Editor 基础篇(三):自定义窗口 终极目标 利用学到东西制作自己工具...准备工作 在之前项目中,找到 Editor 文件夹,然后创建一个新 C# 脚本,命名为“MyFirstWindow”,然后双击打开脚本,添加如下代码: using System.Collections...步骤: 1.GUILayout.Space(10),这个有说过,让两个元素之间空十个像素之间距离 2.GUI.skin.label.fontSize 、GUI.skin.label.alignment...用于设置标题字体大小和对齐格式; 显示当前正在编辑场景 ?...1.第一个参数用于设置卡槽标题名字 2.第二个参数用于设置字段显示物体 3.第三个参数用于设置显示类型 4.第四个参数用于设置是否允许指定场景中物件 绘制描述文本区域

    1.9K30

    基于Unity编辑器开发(一): GUI框架技术

    如果只是内部用用, 其实直接扩展Unity就够了; 但问题是需要发布给外部用户使用, 那么总不能把全套资源和Unity发给他们, 所以就诞生了这么个奇葩需求....UI需要使用传统方式来开发, 什么Qt/Winforms/WPF/Web等, 用Unity内置UI也是一个思路 游戏内逻辑基本都在mono虚拟机上跑, 外面再搞一套UI逻辑的话, 怎么做到公共代码复用...GUI框架技术 Unity渲染窗口 问题就是怎么把Unity嵌入到现有的一些GUI窗口中?...还有另外一个思路, 就是使用类似ActiveXWeb控件技术, 不过这种对于游戏改动太大, 使用上也有比较多限制, 所认不推荐....GUI 本来想尝试一下使用Web前端技术做UI, 比如像https://threejs.org/editor/, https://victhorlopez.github.io/editor/, https

    4.7K80

    Unity编辑器UnityEditor基础(二)

    本文链接:https://blog.csdn.net/CJB_King/article/details/72828957 Unity编辑器UnityEditor基础(二) 终极目标 利用学到东西制作自己工具...准备工作 还是使用上一篇 Unity 工程,然后在 Scripts 文件夹里创建一个新 C# 脚本,命名为“Player”,然后双击打开脚本,然后为其添加如下代码: using UnityEngine...("Damage",player.damage,0,20); //根据伤害值大小设置提示显示类型和提示语 if(player.damage<10) {...EditorGUILayout.Space() 可在两个元素之间空出一行。...第二个参数是设置显示值, 第三个参数是设置进度条名字 提示: 1.第一个参数,我们使用了 GUILayoutUtility.GetRect() 工具类 GetRect()方法返回一个设置好矩形框

    2.3K30
    领券