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

相关推荐
许嵩6610 小时前
IC 脚本之VIM 记录
linux·编辑器·vim
cxks-从新开始15 小时前
使用 md-editor-v3 开发自定义 Markdown 编辑器组件
编辑器
牙买加_小杨16 小时前
用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转这些功能
ide·vscode·编辑器
南郁16 小时前
06.VSCODE:备战大项目,CMake专项配置
ide·vscode·编辑器
哑巴湖小水怪1 天前
WPS宏编辑器开发,单元格内容变更自动触发事件
java·编辑器·wps
哟哟耶耶2 天前
vscode-相关自用插件(倒计时,时间显示,编码对齐,css等编码颜色,简体中文,git提交相关,vue项目)
ide·vscode·编辑器
CodeCraft Studio2 天前
【实用技能】ASP.NET Core:在同一个 Razor 视图中使用文档编辑器和查看器
编辑器·asp.net
dllmayday2 天前
VSCode 多工程联合调试
ide·vscode·编辑器
霖雨2 天前
使用Visual Studio Code 快速新建Net项目
java·ide·windows·vscode·编辑器
fll9802052 天前
配置修改Vim编辑器中TAB键的缩进长度
linux·编辑器·vim