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

相关推荐
2301_8035545235 分钟前
什么是Vim
linux·编辑器·vim
王光环2 小时前
vscode与keil的乱码不兼容问题
ide·vscode·编辑器
萑澈2 小时前
迁移 Visual Studio Code 设置和扩展到 VSCodium
ide·vscode·编辑器
编程乐趣3 小时前
一个用C#开发的记事本Notepads开源编辑器
c#·编辑器·.net
threelab7 小时前
15.three官方示例+编辑器+AI快速学习webgl_buffergeometry_instancing
人工智能·学习·编辑器
threelab12 小时前
07.three官方示例+编辑器+AI快速学习webgl_buffergeometry_attributes_integer
人工智能·学习·编辑器
阿幸软件杂货间18 小时前
VSCode1.101.0便携版|中英文|编辑器|安装教程
vscode·编辑器
tmy_starlight1 天前
2025年全新 GPT 4.5 AI 大模型 国内免费调用
ide·gpt·编辑器
Lowcode0021 天前
企业开发平台大变革:AI 代理 + 平台工程重构数字化转型路径
人工智能·云计算·编辑器
爱吃程序猿的喵1 天前
基于VSCode+PlatformIO环境的ESP8266的HX1838红外模块
ide·vscode·编辑器·arduino·esp8266·红外线