【Unity】Inspector排版扩展学习初探

一、简单的Unity Inspector扩展

[SerializeField]

[SerializeField] 作用:让private属性也可以显示在面板上

[Range(x , y)]

[Range(x , y)] 作用: 让参数从输入框变为范围滑条

[Header(" 标题 ")]

[Header(" 标题 ")]作用:在属性前面加上标题

[Tooltip(" 解释")]

[Tooltip(" 解释")]作用: 在鼠标停留在属性名上时显示解释

[TextArea(a ,b)]

[TextArea(a ,b)]作用: 让文本输入框可以输入不止1行,为最小a行,最大b行

[Space(N)]

[Space(N)]作用:控制两个属性在Inspector面板上显示的间隔大小N

[HideInInspector]

[HideInInspector] 作用: 让public属性不会显示在面板上

以上可以满足基本需求,但更复杂的排版需要代码实现,需要扩展Editor类。

二、使用IMGUI框架扩展

1.添加参数

扩展的Editor类必须放在Editor文件夹

然后在脚本中使用UnityEditor,并且继承Editor类,同时在初始需要写[CustomEditor(typeof(Class))],来指明是为哪个脚本添加的扩展 

 

在IMGUI框架下,我们需要覆盖OnInspectorGUI()来实现扩展。

 如图所示,在覆盖时会自动调用父类的方法OnInspectorGUI,如果去掉该方法则原脚本则不会有任何属性显示。

我们先定义一个2D纹理,然后调用ObjectField函数,输入名称,值等信息。 该函数返回值是一个Object所以在前面加上强制转换。然后就可以看到原脚本的面板上有了新的属性。

2.添加按钮&调整样式

我们还可以添加按钮: 

GUILayout.Button用来添加按钮,如果按钮被点击,则该方法会返回一个True。如下图所示。

IMGUI框架也可以调整样式,如下图,为按钮添加高度参数,可以让按钮变大。 

 

三、使用UI Elements扩展

使用UI Elements框架需要添加相应的命名空间。 

同样的覆盖父类的方法,如上图。此时返回Unity窗口,我们发现我们原本脚本的之前用IMGUI框架添加的属性全部消失了。原因是当CreateInspectorGUI的返回值不为空的时候,它的优先级是最高的,所以无视了之前IMGUI框架下的方法。 

其中VisualElement是该框架下最基本的显示对象,可以添加最基本的任何其它子显示对象。

1.添加参数 

以上三行代码显示了如何像IMGUI框架一样为原脚本添加一个纹理的参数。

2.添加按钮&调整样式 

 接着我们添加一个按钮,如下图代码所示,我们可以为按钮设置相应的调用方法。

 可以看到,按下按钮后,打印出了相应的字符串。

我们同样可以用Button.style.height来更改样式高度,如下图所示。 

3.注册回调

我们还可以检测属性注册来执行回调自定方法,如下图所示。

 可以看到,当我们指定了一张纹理后,回调函数被调用,打印出了字符串。

 

如果我们想对更改后的纹理或其他属性做一些操作,如打印新纹理的名字,那么要在回调函数中执行如上图所示。

4.调用原脚本方法

那么如果我们想在扩展脚本里调用原脚本的函数该怎么办呢?比如按下按钮,调用原脚本的函数。我们先在原脚本中写一个函数,打印一个字符串。

 然后在扩展Editor的脚本里更改按下按钮的方法,这里把原来的打印注释掉。

 Unity提供了target指向原来的脚本。当然我们需要把它强制转换成原脚本的类。然后调用即可。如上图所示。

按下按钮,可以看到,打印成功了。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么说指针是c语言的灵魂?

指针,是一个让c语言初学者颤抖的坎。 为什么说指针是c语言的灵魂? 因为它提供了对内存的直接控制能力,这是C语言和其它高级编程语言的关键特点之一。 基于这个特点,能衍生出非常多灵活的应用,比如内存管理、数组操作、…

springboot+shiro+jwt 兼容session和token

最近和别的软件集成项目,需要提供给别人接口来进行数据传输,发现给他token后并不能访问我的接口,拿postman试了下还真是不行。检查代码发现项目的shiro配置是通过session会话来校验信息的 ,我之前一直是前后端自己写,用…

flex布局,子项在主轴上超出父容器的问题

flex布局,子项在主轴上超出父容器的问题 flex布局,子项在主轴上超出父容器的问题 大家有没有遇到,即使子项设置了flex:1 ,以为会分配主轴上的剩余空间。但是效果是子项在主轴上还是超出了父容器。 要解决这个问题,我们可以将f…

《一头扎进》系列之Python+Selenium框架设计篇22- 价值好几K的框架,狼来了,狼来了....,狼没来,框架真的来了

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1. 简介 前边宏哥一边一边的喊框架,就如同一边一边的喊狼来了!狼来了!.....这回是狼没有来,框架真的来了。从本文开始宏哥将会一步一步介…

项目经理如何做好需求管理规程?

软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单,用户需求说明书,概要设计说明书,技术解…

使用Arrays.asList 报错Nullpointerexception 需要提前对参数进行判空

//为什么这样的时候会报空指针异常**Arrays.asList 这里这个方法中的参数为空**String[] checkedResourceNos1 dto.getCheckedResourceNos();List<String> checkedResourceNos null; //需要在这里**判断是否为空**&#xff0c;**不为空才能**调**用Arrays.asList转化为…

前端JS必用工具【js-tool-big-box】学习,下载大文件(纯下载功能版)

这一小节呢&#xff0c;我们说一下 js-tool-big-box 工具库&#xff0c;下载文件的用法。这一小节说的是纯下载版本。 意思就是我们在前端项目开发中&#xff0c;下载功能嘛&#xff0c;无论你发送fetch请求&#xff0c;还是axios请求&#xff0c;你总得发送一下请求&#xff0…

Stable Audio Tools - 会打字就能搞音乐创作,AI音频生成工具,一键生成任意背景音乐 本地一键整合包

Stable Audio Tools是Stability AI 推出的AI生成音乐平台&#xff0c;你只需要输入描述性文本提示以及所需的音频长度&#xff08;最长支持512秒即8分钟&#xff09;即可生成高质量的音乐和音效。 你可以通过文本提示就能直接生成摇滚、爵士、电子、嘻哈、重金属、民谣、流行、…

垂直业务系统权限设计

遵循 RBAC 的原则&#xff0c;以更贴近日常工作的业务处理流程&#xff0c;设计一套与总公司分公司相吻合的组织、部门、岗位结构&#xff0c;配套可以继承的权限组和特定的岗位权限&#xff0c;实现系统授权的操作简化和权限的集成应用简化。 RBAC&#xff08;Role-Based Acce…

如何从微软官方下载Edge浏览器的完整离线安装包

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 正文内容 📒🚀 官方直链下载🚬 手动选择下载🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 在网上搜索Microsoft Edge浏览器的离线安装包时,很多用户都会发现大部分都是在线安装包,无法满足他们在无网络环境下进…

Mocha Pro 2024 v11.0.1 Mac版摄像机反求跟踪插件更新:优化AE/PR/OFX/达芬奇工作流程

更新Mac苹果版&#xff0c;原生支持Intel和Apple M芯片&#xff0c;安装很简单。Mocha Pro 是一款世界知名的软件和插件&#xff0c;用于平面运动跟踪、3D 跟踪、动态观察、对象移除、图像稳定和PowerMesh有机扭曲跟踪。得益于集成SynthEyes核心3D跟踪算法的强大功能&#xff0…

白酒:茅台镇白酒的酒杯选择与品鉴技巧

品鉴一杯品质的白酒&#xff0c;需要选择合适的酒杯和掌握一定的品鉴技巧。在茅台镇&#xff0c;云仓酒庄豪迈白酒备受推广&#xff0c;其酒杯选择与品鉴技巧也备受关注。 首先&#xff0c;选择合适的酒杯非常重要。一般来说&#xff0c;品鉴白酒的酒杯应该具有一定的透明度&am…

使用随机数字或计数器在运行时计算百分比

如果我们需要在运行时计算某些项目的百分比&#xff0c;可以使用 Python 中的随机数生成器或者计数器来模拟这个过程。这取决于我们想要模拟的具体情况和场景。今天我将通过文字方式详细记录我实操过程。 1、问题背景 在处理大量交易时&#xff0c;我们需要对一定比例的交易进…

扩散模型ddpm原理

扩散模型ddpm原理 bilibili 视频讲解 笔记记录 总结&#xff1a;模型反向还原过程中&#xff0c;除模型推理得到噪声预测&#xff0c;还需要从标准正太分布中采样一份噪声&#xff0c;两者的线性组合得到前一时刻的降噪结果&#xff0c;这里可能会有较大的不确定性(对于生成式任…

硬核:浏览器发展的四大方向,早把C/S挤到犄角旮旯了。

浏览器是互联网的基础设施&#xff0c;浏览器早不满足于作为上网入口&#xff0c;而是全面进化啦&#xff0c;比如各类应用开始web化&#xff0c;同时浏览器也被分装到桌面应用中去&#xff0c;本文就给大家分享一下浏览器发展的四大方向。 方向一&#xff1a; 传统桌面浏览器…

shell文本三剑客之sed

一、sed编辑器 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要么存储在一个命令文本文件中。 1、sed的执行过程 读取&…

把Vue文件转至树莓派上遇到的问题和解决方案

把整个文件夹复制进树莓派后&#xff0c;运行 npm run dev ,报错sh: 1: vite: Permission denied 解决方案&#xff1a;删除项目里的 node_modules 重新 npm install 再运行即可 rm -rf node_modules/ npm install 在安装过程中&#xff0c;遇到下图问题&#xff0c;vulnerabi…

Docker:认识Docker Compose

文章目录 什么是docker compose&#xff1f;为什么要使用docker compose&#xff1f;docker compose的功能使用步骤核心功能 docker compose使用场景Docker Compose命令清单Docker Compose 命令格式操作演示创建一个Compose目录创建一个docker-compose.yml文件创建首页目录&…

【笔记】【Git】多个dev分支合并到master分支的文件冲突

问题描述 多个dev分支在同步开发,同时发起代码评审,但合入master的时候存在先后顺序,那么后面同文件的操作则会提示“合并有文件冲突”,导致代码无法入库,只能重新提交。 在个人分支中如何解决与master分支差异,从何顺利提交评审合入代码? 参考方案 1、按照下面的流程…

人工智能的社会应用:深刻变革的新浪潮

人工智能的社会应用&#xff08;语言文本方面&#xff09; 人工智能在社会应用中的广泛运用体现在多个领域&#xff0c;特别是在语音和文本处理方面。以下是这些技术的一些扩展&#xff1a; 1. 文本翻译&#xff1a; 谷歌翻译&#xff1a;利用深度学习模型&#xff0c;支持100多…