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

相关推荐
内存不泄露10 小时前
性价比极高的中转平台
编辑器
qinwsq17 小时前
keil编译第一个工程
编辑器
VidDown18 小时前
VidDown 工具站:视频分辨率技术
javascript·网络·编辑器·音视频·视频编解码·视频
xiaoshuaishuai821 小时前
C# 定制化Markdown编辑器
开发语言·c#·编辑器
睡一觉就好了。2 天前
vim基础操作
linux·编辑器·vim
elirlove12 天前
打造属于自己的网页工匠台:HTML在线编辑器技术深度解析
前端·编辑器·html
Tairitsu_H2 天前
告别默认Vim:Linux下轻松配置Vim开发环境
linux·编辑器·vim·配置
赛博三把手2 天前
实操篇一:Claude Code + Token173 国内直连 Anthropic Fable 5 完整接入教程
linux·编辑器·vim
互联网散修2 天前
鸿蒙实战:图片编辑器——像素马赛克从卡顿到丝滑的终极优化
华为·编辑器·harmonyos
zyplayer-doc2 天前
知识库官方CLI工具已发布并开源,以及重写思维导图编辑器,提供更完整的编辑能力,zyplayer-doc 2.6.6 发布啦!
人工智能·安全·pdf·编辑器·创业创新