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拓展编辑器基础知识

相关推荐
winfield8214 小时前
Win11系统,如何让Sublime直接显示在右键点击中?
windows·编辑器·sublime text
我是Superman丶11 小时前
markdown在线预览编辑器 html
编辑器
姜太小白1 天前
【VSCode/Trae】trae已安装的扩展如何导出
ide·vscode·编辑器
进击的横打2 天前
【车载开发系列】Renesas Flash Programmer (RFP) 反向读取功能
车载系统·编辑器·rfp
山峰哥2 天前
数据库工程中的SQL调优实践:从索引策略到查询优化的深度探索
服务器·数据库·sql·性能优化·编辑器
CodeQingqing2 天前
cubemx + Keil + vscode + Keil Assistant 工作流
ide·vscode·编辑器·keil
yuezhilangniao3 天前
【AI 编辑器开发规范 v2.1 版】—— 为 AI 时代的敏捷开发而生
人工智能·编辑器·敏捷流程
charlie1145141914 天前
从0开始榨干 Claude Code:VSCode 实战配置与默认读取文件完整踩坑记录
ide·vscode·编辑器
智算菩萨5 天前
马年奔腾,万象更新——2026新年祝福与马年文化深度解读
编辑器
山峰哥5 天前
SQL调优实战:从索引失效到性能飙升的破局之道
服务器·数据库·sql·性能优化·编辑器·深度优先