Unity 自定义窗口

news2025/5/22 12:45:08

放在Editor文件夹下;
在这里插入图片描述

#if UNITY_EDITOR

using System;
using UnityEditor;
using UnityEngine;


namespace EditorCustumTool
{
    /// <summary>
    /// 自定义窗口
    /// </summary>
    public class CustomWindow : EditorWindow
    {
        public enum FlagType
        {
            Flag1 = 101,
            Flag2 = 102,
            Flag3 = 103,
        }


        private string text1 = "";
        private float number1 = 0;

        private string text2 = "";
        private float number2 = 0;

        private float sliderValue;

        private float scrollBarHorizontal;
        private float scrollBarVertical;

        private int gridIndex = 0;
        private int toolbarIndex = 0;

        private FlagType flag;

        private int popupindex;

        private bool isOn = false;

        private CustomWindow()
        {
            this.titleContent = new GUIContent("自定义窗口");
        }

        [MenuItem("自定义工具/自定义窗口")]
        private static void ShowWindow()
        {
            EditorWindow.GetWindow(typeof(CustomWindow));
        }

        private void OnGUI()
        {
            EditorGUILayout.BeginVertical();

            // 标题
            GUILayout.Space(10);
            GUI.skin.label.fontSize = 15;
            GUI.skin.label.alignment = TextAnchor.MiddleCenter;
            GUILayout.Label("自定义窗口");

            // 内容        
            GUI.skin.label.fontSize = 12;
            GUI.skin.label.alignment = TextAnchor.UpperLeft;


            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            GUILayout.Label("文本1", GUILayout.MaxWidth(60));
            text1 = EditorGUILayout.TextArea(text1, GUILayout.MaxHeight(20));
            GUILayout.EndHorizontal();


            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            GUILayout.Label("数值1", GUILayout.MaxWidth(60));
            number2 = EditorGUILayout.FloatField(number2, GUILayout.MaxHeight(20));
            GUILayout.EndHorizontal();


            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            text1 = EditorGUILayout.TextField("文本2", text1);
            GUILayout.EndHorizontal();


            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            number2 = EditorGUILayout.FloatField("数值2", number2);
            GUILayout.EndHorizontal();


            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            sliderValue = EditorGUILayout.Slider("滑动条", sliderValue, -5, 5);
            GUILayout.EndHorizontal();


            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            scrollBarHorizontal = GUILayout.HorizontalScrollbar(scrollBarHorizontal, 0, 0, 100, new[] { GUILayout.Width(100) });
            scrollBarVertical = GUILayout.VerticalScrollbar(scrollBarVertical, 0, 0, 100, new[] { GUILayout.Height(100) });
            GUILayout.EndHorizontal();


            // 按钮控件
            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            gridIndex = GUILayout.SelectionGrid(gridIndex, new[] { "1", "2", "3", "4", "5", "6" }, 4);
            GUILayout.EndHorizontal();


            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            toolbarIndex = GUILayout.Toolbar(toolbarIndex, new[] { "1", "2", "3", "4", "5", "6" });
            GUILayout.EndHorizontal();


            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            // 这个单选
            flag = (FlagType)EditorGUILayout.EnumPopup(new GUIContent("FlagType", null, "ToolTip"), flag);
            // 这个可以多选
            //flag = (FlagType)EditorGUILayout.EnumFlagsField(new GUIContent("FlagType", null, "ToolTip"), flag);
            GUILayout.EndHorizontal();


            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            //一个选择框,每个选择框里表示一个Int数
            popupindex = EditorGUILayout.IntPopup("IntPopup", popupindex, new[] { "a", "b", "c" }, new[] { 1, 2, 3 });
            GUILayout.EndHorizontal();


            // 展示信息
            GUILayout.Space(10);
            var noSelected = Selection.transforms == null || Selection.transforms.Length == 0;
            var message = noSelected ? "请选择一个物体" : $"当前选中了{Selection.transforms.Length}个物体";
            var messageType = noSelected ? MessageType.Error : MessageType.Info;
            EditorGUILayout.HelpBox(message, messageType);

            EditorGUILayout.Space(10);
            if (GUILayout.Button("打印选中的物体名"))
                DebugSelectedObjName();

            GUILayout.EndVertical();
        }

        private void DebugSelectedObjName()
        {
            if (Selection.transforms.Length > 0)
            {
                foreach (var trans in Selection.transforms)
                    Debug.LogError(trans.name);
            }
            else
            {
                Debug.LogError("当前没选中任何物体");
            }
        }
    }
}

#endif

效果如图所示
在这里插入图片描述

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

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

相关文章

Qt内存管理、UI编辑器、客制化组件、弹出对话框、常用部件类

头文件的小技巧 #include <QtWidgets> // 在自动生成的 .h 里面加上此句 适用条件&#xff1a; QT 的内存管理 当父窗体被关闭时&#xff0c;子部件的内存会自动释放。 对象树是一种管理对象生命周期的机制。当一个对象被添加到另一个对象的子对象列表中时&#xff0…

Springboot+AOP+注解实现字段AES+Base64加解密

AOP实现AESBASE64加解密 场景如下&#xff1a; 需要对数据库存储的字段&#xff0c;进行加解密的处理。如果都直接写代码的话&#xff0c;那么代码回冗余很多&#xff0c;所以使用AOP注解去实现。让代码简洁&#xff0c;方便 具体实现如下&#xff1a; 1、依赖 <depende…

C语言搭建项目-学生管理系统(非链表)

、 目录 搭建offer.h文件 搭建offer.c中的main函数 密码登入系统 搭建my_oferr.c中的接口函数 使用帮助菜单接口函数 增加学生信息接口函数 查询学生信息接口函数 删除学生信息接口函数 保存学生信息接口 打开文件fopen 关闭文件fclose 判断是否保存文件fwrite 退出执行文件…

TCP传输层详解(计算机网络复习)

介绍&#xff1a;TCP/IP包含了一系列的协议&#xff0c;也叫TCP/IP协议族&#xff0c;简称TCP/IP。该协议族提供了点对点的连接机制&#xff0c;并将传输数据帧的封装、寻址、传输、路由以及接收方式都予以标准化 TCP/IP的分层模型 在讲TCP/IP协议之前&#xff0c;首先介绍一…

【MATLAB】tvfEMD信号分解+FFT+HHT组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 TVFEMDFFTHHT组合算法是一种结合了总体变分模态分解&#xff08;TVFEMD&#xff09;、傅里叶变换&#xff08;FFT&#xff09;和希尔伯特-黄变换&#xff08;HHT&#xff09;的信号分解方…

配置Smart Link负载分担示例

Smart Link和Monitor Link简介 定义 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个接口作为另一个的备份。Smart Link常用于双上行组网&#xff0c;提供可靠高效的备份和快速的切换机制。 Monitor Link是一种接口联动方案&#…

<习题集><LeetCode><链表><2/19/21/23/24>

目录 2. 两数相加 19. 删除链表的倒数第 N 个结点 21. 合并两个有序链表 23. 合并 K 个升序链表 24. 两两交换链表中的节点 2. 两数相加 https://leetcode.cn/problems/add-two-numbers/ public ListNode addTwoNumbers(ListNode l1, ListNode l2) {//head是cur链表头节点…

拼多多选品大作战:通过热词选利润赛道

相信很多人都听过一句话&#xff1a;找对了风口&#xff0c;猪都能飞起来。 我们电商人也应如此&#xff0c;从行业分析到选品都应快速跟上市场节奏。 今天就给大家分享一下如何通过热词来进行一个行业类目的分析与选择。 01 热词是什么 热词通常指的是热搜词和飙升词&#…

大华DSS S2-045 OGNL表达式注入漏洞复现

0x01 产品简介 大华DSS安防监控系统平台是一款集视频、报警、存储、管理于一体的综合安防解决方案。该平台支持多种接入方式,包括网络视频、模拟视频、数字视频、IP电话、对讲机等。此外,该平台还支持多种报警方式,包括移动侦测、区域入侵、越线报警、人员聚集等。 0x02 漏…

天津大数据培训机构品牌 数据分析师的发展方向

大数据专业还是有一定难度的&#xff0c;毕竟大数据开发技术所包含的编程技术知识是比较杂且多的如果是计算机专业的学生或者自身有一定基础的人学&#xff0c;相对来说会比较容易&#xff0c;但对于零基础小伙伴学习来说&#xff0c;想要学习大数据&#xff0c;难度还是很高的…

C# 编程新手必看,一站式学习网站,让你轻松掌握 C# 技能!

介绍&#xff1a;实际上&#xff0c;您可能弄错了&#xff0c;C#并不是一种独立的编程语言&#xff0c;而是一种由微软公司开发的面向对象的、运行于.NET Framework之上的高级程序设计语言。C#看起来与Java十分相似&#xff0c;但两者并不兼容。 C#的设计目标是简单、强大、类型…

时间序列预测 — VMD-LSTM实现单变量多步光伏预测(Tensorflow):单变量转为多变量

目录 1 数据处理 1.1 导入库文件 1.2 导入数据集 1.3 缺失值分析 2 VMD经验模态分解 3 构造训练数据 4 LSTM模型训练 5 预测 1 数据处理 1.1 导入库文件 import time import datetime import pandas as pd import numpy as np import matplotlib.pyplot as plt f…

系列八、SpringBoot中自定义SpringMVC配置

一、概述 作为Spring家族的明星产品&#xff0c;SpringBoot极大地简化了程序员的日常开发&#xff0c;提高了开发效率。我们很容易得借助于SpringBoot就可以快速开发业务代码。一般情况下&#xff0c;公司的日常开发都是基于web服务的&#xff0c;我们在使用idea等工具初始化一…

SecureCRT9汉化版安装详解

CRT中文版安装说明 一、安装步骤1. 安装注意&#xff1a;2. 右键压缩包&#xff0c;解压到本地文件夹内3. 解压后进入目录&#xff0c;双击CRT_SFX_91_Run_Script激活脚本 3 如果运行结果是下图&#xff0c;就激活成功了&#xff1a;4. 双击桌面的CRT和FX图标5. 如果提示下图&a…

Qt简介、工程文件分离、创建Qt工程、Qt的帮助文档

QT 简介 core&#xff1a;核心模块&#xff0c;非图形的接口类&#xff0c;为其它模块提供支持 gui&#xff1a;图形用户接口&#xff0c;qt5之前 widgets&#xff1a;图形界面相关的类模块 qt5之后的 database&#xff1a;数据库模块 network&#xff1a;网络模块 QT 特性 开…

VisualStudio反汇编功能使用

VisualStudio反汇编功能使用 使用方法 到达断点时&#xff1a;CtrlK&#xff08;松开&#xff09;G&#xff08;后按&#xff09;唤出反汇编界面&#xff0c;就可以看到当前代码对应的汇编语言了 注意&#xff1a;进入反汇编窗口后可以F10单次调试一条汇编指令 其他&#…

3.添加与删除字段

添加字段与删除字段 1.添加字段 因为甲方的业务需求是不停变化的&#xff0c;所以在数据库操作中&#xff0c;添加字段可是常有的事。一个完整的字段包括&#xff1a;字段名、数据类型和完整性约束。 语法规则为&#xff1a; ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条…

SPECPOWER2008

一、前言# 1、软件说明# 官网&#xff1a;SERT套件用户指南2.0.5SPECpower介绍SPEC基准及工具SPECpower_ssj2008测试结果SPECpower_ssj2008-Design_ccs - SPEC# SPEC&#xff08;the Standard Performance Evaluation Corporation&#xff09;是一个由计算机硬件厂商、软件公…

JPA对数据库修改注意点

同一事务中获取不到修改数据 spring-boot-starter-parent版本2.7.12 Dao Query(value "select * from inventory_list where id in (?1) order by id desc",nativeQuery true) List<InventoryListEntity> getByIds(List<Integer> idList);Modifyin…

openharmony 开发环境搭建和系统应用编译傻瓜教程

一、DevEco Studio 安装 当前下载版本有两个&#xff0c;由于低版本配置会有各种问题&#xff0c;我选择高版本安装 低版本下载链接 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 高版本下载链接 OpenAtom OpenHarmony 解压后安装 双击安装 安装配置 二、创建测…