UnityShaderUI编辑器扩展

前言:

当我们在制作通用Shader的时候,避免不了许多参数混杂在一起,尽管在材质面板已经使用过Header标签来区分,但是较长的Shader参数就会导致冗余,功能块不够简约明了,如图:

对于Shader制作者来说,Shader的所有功能都了解,但是对于项目的同组伙伴来说,我们还需要教他们这些参数的作用,那些模块是干什么的,很不友好!

于是乎,扩展Shader的显示界面就变得尤为重要,如图:

ShaderUI界面的扩展其实也是一种编辑器扩展,和普通的编辑器扩展脚本的编写方式基本一致,都可是使用EditorLayout这些UI自定义布局方法。

OnGUI

首先这是编辑器扩展,需要调用编辑器的命名空间,同时需要继承ShaderGUI函数

而其中,最重要的就是重写OnGUI函数

可以看到的是,这个函数会传递两个参数进来,MaterialEditor则是当前材质的编辑,MaterialProperty\[\]数组则包含了Shader中在Property里定义的所有属性,下标从0开始,剩余的就和普通的编辑器扩展一样了。

一般在改变UI界面的属性时对应的material也应该设置属性值,则使用EditorGUI.BeginChangeCheck和EditorGUI.EndChangeCheck可以检测属性值是否改变并执行相应的操作了

基础的编辑器扩展可以看我之前的文章:Unity拓展编辑器基础知识

相关推荐
wbc1031555813 小时前
基于 VSCode + Icarus 的 Verilog 编译和仿真
ide·vscode·编辑器
似夜晓星辰14 小时前
Markdown文本编辑器Typora平替
编辑器·github
谷哥的小弟15 小时前
(最新版)VSCode安装图文详解教程
ide·vscode·编辑器·教程·前端开发·图文
xiaoliuliu1234515 小时前
LaTeX 2023 (TeX Live + TeXstudio) 安装与汉化教程 Windows版:自定义路径+编辑器配置指南
windows·编辑器
IOT.FIVE.NO.116 小时前
Codex+Vscode+Remote ssh+ 服务器自定义第三方API配置保姆级教程
ide·vscode·编辑器
SpiderPex1 天前
Vibe Coding 开发流程心得:从入门到规范化的踩坑记录
vscode·编辑器·ai编程·开发流程·vibe coding
晚风吹红霞2 天前
Vim编辑器从入门到熟练 —— 三种模式与常用命令详解
linux·编辑器·vim
SWAGGY..2 天前
Linux系统编程:(十一)进程状态&&Linux中的僵尸状态
linux·服务器·编辑器·vim
huangfuyk3 天前
前端使用Cursor编辑器方面遇到的问题及注意细节
前端·编辑器·ai编程·cursor
Codiggerworld3 天前
Neovim vs Vim:该不该“跳槽”?
编辑器·vim·跳槽