Unity 改造编辑器组件字段显示

关于Unity中组件选择枚举的不同,其他属性跟着变的功能一直没有写,今天补上,

首先定义一个MaskScroll滚动的组件,这个组件支持水平和竖直方向上的滚动,还有加速减速滚动的功能

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public enum EMaskScrollStatus {NONE,/// <summary>/// 停止/// </summary>STOP,/// <summary>/// 加速滚动/// </summary>SCROLLING_ACCE,/// <summary>/// 减速滚动/// </summary>SCROLLING_DESC
}public enum EMaskScrollDirection {/// <summary>/// 水平方向/// </summary>Horizontal,/// <summary>/// 竖直方向/// </summary>Vertical
}public enum EMaskScrollUpDown {UP,DOWN
}public enum EMaskScrollLeftRight {LEFT,RIGHT
}public class MaskScroll : MonoBehaviour
{[Header("滚动速度相关")][Tooltip("加速到多大速度")][SerializeField]private float acceSpeedMax = 10f;[Tooltip("减速到多小")][SerializeField]private float descSpeedMin = 0f;[Space(5)][Tooltip("滚动轴")]public EMaskScrollDirection scrollDir = EMaskScrollDirection.Vertical;[HideInInspector]public EMaskScrollUpDown scrollVertical = EMaskScrollUpDown.DOWN;[HideInInspector]public EMaskScrollLeftRight scrollHorizontal = EMaskScrollLeftRight.RIGHT;[SerializeField][Tooltip("滚动缓冲区")]private float scrollBuffer = 30f;private EMaskScrollStatus scrollStatus = EMaskScrollStatus.NONE;private RectTransform contentsTransform = null;/// <summary>/// 滚动到哪一个元素/// </summary>private int targetScrollIndex = 0;public EMaskScrollStatus ScrollStatus {set {scrollStatus = value;}get {return scrollStatus;}}private void Awake() {contentsTransform = transform.Find("avatars") as RectTransform;}// Start is called before the first frame updatevoid Start(){}public void StartScroll() {// 开始加速滚动scrollStatus = EMaskScrollStatus.SCROLLING_ACCE;targetScrollIndex = Random.Range(0,contentsTransform.childCount);}// Update is called once per framevoid Update(){if(scrollStatus == EMaskScrollStatus.SCROLLING_ACCE || scrollStatus == EMaskScrollStatus.SCROLLING_DESC) {if(scrollStatus == EMaskScrollStatus.SCROLLING_ACCE) {} else {}}}
}

写到这当时我就想能根据我选择的滚动轴动态去显示滚动方向呢,于是就有了以下的答案:

using System.Collections;
using System.Collections.Generic;
using UnityEditor;[CustomEditor(typeof(MaskScroll))]
public class MaskScrollEditor : Editor
{public override void OnInspectorGUI(){DrawDefaultInspector();MaskScroll maskScroll = (MaskScroll)target;if(maskScroll.scrollDir == EMaskScrollDirection.Horizontal) {maskScroll.scrollHorizontal = (EMaskScrollLeftRight)EditorGUILayout.EnumPopup("滚动方向",maskScroll.scrollHorizontal);} else if (maskScroll.scrollDir == EMaskScrollDirection.Vertical){maskScroll.scrollVertical = (EMaskScrollUpDown)EditorGUILayout.EnumPopup("滚动方向", maskScroll.scrollVertical);}}
}

另外注意不要在该代码里面加入 base.OnInspectorGUI()否则组件会加入 

到编辑器两次的 

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

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

相关文章

Visual Studio Code 教程 VsCode安装Live Server以服务形式打开html

搜索Live Server 插件,然后安装 选一个html文件&#xff0c;右键点击 Open with live server,然后就自动弹出来了

使用paddleOCR训练自己的数据集到ONNX推理

一、环境安装 1、安装paddlepaddle&#xff1b; https://www.paddlepaddle.org.cn/ 这里安装2.6.1的话使用onnx会出现swish算子报错的问题 python -m pip install paddlepaddle-gpu2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simple验证是否成功安装 python import paddl…

一起学Hugging Face Transformers(14)- “自定义训练循环”问题解答

文章目录 前言问题一&#xff1a;可以详解下面这两段代码吗&#xff1f;1. 训练步骤的计算2. 学习率调度器的定义3. 作用总结4. 示例详细解释 问题二&#xff1a;学习率是什么学习率的重要性例子学习率调度器学习率调度策略示例代码 问题三&#xff1a;什么是 num_warmup_steps…

Mysql Workbench的使用

本篇内容&#xff1a;对Mysql Workbench的常规使用学习 一、知识储备 1. Workbench 可以做什么 是mysql数据库可视化管理的一款免费工具&#xff0c;除了平常的通过sql语句&#xff0c;进行创建数据库表、增删改查外&#xff0c;还可以利用其进行建模创建数据库表。通过创建…

域名注册后还需要做什么?

在建立网站或在线业务时&#xff0c;域名注册是一个非常重要的步骤。但是&#xff0c;仅仅注册一个域名还不足以让您的网站或在线业务成功运营。在域名注册后&#xff0c;还需要进行一系列的步骤来确保您的网站能够正常运行&#xff0c;并吸引到访者。本文将介绍域名注册后的必…

人工智能的新时代:从模型到应用的转变

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Linux】记录一起网站劫持事件

故事很短&#xff0c;处理也简单。权当记录一下&#xff0c;各位安全大大们手下留情。 最近一位客户遇到官网被劫持的情况&#xff0c;想我们帮忙解决一下&#xff08;本来不关我们的事&#xff0c;毕竟情面在这…还是无偿地协助一下&#xff09;&#xff0c;经过三四轮“谦让…

Conda修改默认环境创建路径

conda安装好后默认将新建环境安装在C盘 修改.condarc 配置文件 注 : Windows操作系统创建的 .condarc 文件通常在 C:\Users\User_name 这个目录下&#xff1b; 注 : Linux操作系统创建的 .condarc 文件通常在/home/User_name 这个目录下。 在.condarc文件中添加以下内容 有…

海康威视监控web实时预览解决方案

海康威视摄像头都试rtsp流&#xff0c;web页面无法加载播放&#xff0c;所以就得转换成web页面可以播放的hls、rtmp等数据流来播放。 一&#xff1a;萤石云 使用萤石云平台&#xff0c;把rtsp转化成ezopen协议&#xff0c;然后使用组件UIKit 最佳实践 萤石开放平台API文档 …

【ROS2】中级-编写动作服务器和客户端(Python)

目标&#xff1a;用 Python 实现一个动作服务器和客户端。 教程级别&#xff1a;中级 时间&#xff1a;15 分钟 目录 背景 先决条件 任务 1. 编写动作服务器2. 编写动作客户端 摘要 相关内容 背景 动作是 ROS 2 中异步通信的一种形式。动作客户端向动作服务器发送目标请求。动作…

SpringBoot整合MongoDB文档相关操作

文章目录 SpringBoot整合MongoDB文档操作添加文档查询文档更新文档删除文档 SpringBoot整合MongoDB 创建项目&#xff0c;添加依赖&#xff0c;配置连接 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-dat…

Python 数据容器的对比

五类数据容器 列表&#xff0c;元组&#xff0c;字符串&#xff0c;集合&#xff0c;字典 是否能下标索引 支持&#xff1a;列表&#xff0c;元组&#xff0c;字符串 不支持&#xff1a;集合&#xff0c;字典 是否能放重复元素 是&#xff1a;列表&#xff0c;元组&#…

遥感分类产品精度验证之TIF验证TIF

KKB_2020.tif KKB_2020_JRC.tif kkb.geojson 所用到的包&#xff1a;&#xff08;我嫌geopandas安装太麻烦colab做的。。 import rasterio import geopandas as gpd import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.metrics import c…

【零基础】学JS之APIS(基于黑马)

喝下这碗鸡汤 披盔戴甲,一路勇往直前! 1. 什么是事件 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 2. 什么是事件监听? 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应&#xff0c;也称为 注…

MySQL怎么获取当前时间

在 MySQL 中&#xff0c;您可以使用以下几种方式获取当前时间&#xff1a; 使用 NOW() 函数&#xff1a; SELECT NOW();NOW() 函数返回当前的日期和时间&#xff0c;格式为 YYYY-MM-DD HH:MM:SS 。 使用 CURRENT_TIMESTAMP 函数&#xff1a; SELECT CURRENT_TIMESTAMP;其效果与…

如何用java语言开发一套数字化产科系统 数字化产科管理平台源码

如何用java语言开发一套数字化产科系统 数字化产科管理平台源码 要使用Java语言来开发一个数字化产科系统&#xff0c;你需要遵循一系列步骤&#xff0c;从环境搭建到系统设计与开发&#xff0c;再到测试与部署。 以下是一个大致的开发流程概览&#xff1a; 1. 环境搭建 Jav…

从Docker 网络看IaC

【引子】近来&#xff0c;老码农又一次有机会实施IaC 了&#xff0c; 但是环境有了新的变化&#xff0c;涵盖了云环境、虚拟机、K8S 以及Docker&#xff0c;而网络自动化则是IaC中的重要组成&#xff0c;温故知新&#xff0c;面向Docker 的网络是怎样的呢&#xff1f; Docker …

C++相关概念和易错语法(16)(list)

1.list易错点 &#xff08;1&#xff09;慎用list的sort&#xff0c;list的排序比vector慢得多&#xff0c;尽管两者时间复杂度一样&#xff0c;甚至不如先把list转为vector&#xff0c;用vector排完序后再转为list &#xff08;2&#xff09;splice是剪切链表&#xff0c;将…

指数增长远大于nlgn

在学习算法导论的时候&#xff0c;遇到了这么一行字把我难住了。我不理解为什么叶节点代价总和就为Ω(nlgn)了&#xff0c;后来经过学习之后了解了&#xff0c;因为n的指数严格大于1&#xff0c;只要指数函数的指数大于1就是指数增长&#xff0c;那么就远大于nlgn。

C++ | Leetcode C++题解之第22题完全二叉树的节点个数

题目&#xff1a; 题解&#xff1a; class Solution { public:int countNodes(TreeNode* root) {if (root nullptr) {return 0;}int level 0;TreeNode* node root;while (node->left ! nullptr) {level;node node->left;}int low 1 << level, high (1 <&…