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

相关推荐
Smoothcloud润云10 小时前
5大功能精修,重构AI算力使用体验!
java·人工智能·windows·算法·重构·编辑器·sublime text
特立独行的猫a17 小时前
鸿蒙 PC 移植记:将微软的 `edit` 轻量级终端编辑器带到 OpenHarmony
microsoft·rust·编辑器·harmonyos·鸿蒙pc·edit
2501_9160088917 小时前
全面解析常用Web前端开发工具:编辑器、调试工具、性能分析器与框架
android·前端·ios·小程序·uni-app·编辑器·iphone
Cloud_Shy61818 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第二章 Item 13 - 16)
c语言·开发语言·网络·笔记·python·编辑器
guslegend1 天前
第2节:AI编辑器底层技术全景导览
人工智能·编辑器
OliverH-yishuihan2 天前
【保姆级教程】Win11 下从零部署 Claude Code:本地环境配置 + VSCode 可视化界面全流程指南
ide·vscode·编辑器
TakeForge2 天前
17天跑通交通行业SVG编辑器
编辑器
键盘飞行员2 天前
macOS Trae 解决 Codex 插件不显示问题(官方适配版)
macos·编辑器·ai编程
Cloud_Shy6182 天前
解读《Effective Python 3rd Edition》:从练气到老魔(第二章 Item 10 - 12)
c语言·开发语言·网络·人工智能·windows·python·编辑器
木古古182 天前
搞一个高效的c/c++开发环境,工具VIm+自研vim插件+Shell脚本
linux·编辑器·vim