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

相关推荐
屋外雨大,惊蛰出没1 小时前
Vscode自动生成类图
ide·vscode·编辑器·类图绘制
ONLYOFFICE1 小时前
ONLYOFFICE 文档9.4发布:许可证更新、电子表格的深色模式、水平分隔线、新幻灯片主题与切换等
编辑器·onlyoffice
qq_14030341441 小时前
vscode过滤文件
ide·vscode·编辑器
毋语天4 小时前
Linux 命令——文件、进程、网络与 Vim 编辑器
linux·网络·编辑器
skywalk816320 小时前
发布vscode插件到 VS Code 市场流程
ide·vscode·编辑器
Highcharts.js1 天前
AI向量知识谱系图表创建示例代码|Highcharts网络图表(networkgraph)搭建案例
开发语言·前端·javascript·网络·信息可视化·编辑器·highcharts
nuoyigui98891 天前
vscode中常用插件介绍xiaojie
ide·vscode·编辑器
陳10301 天前
Linux:工具Vscode的简单介绍
ide·vscode·编辑器
ChampaignWolf1 天前
VSCode Copilot 也能支持其他OpenAI兼容接口啦,可以使用其他模型(DeepSeek、Kimi、Qwen)和第三方转发API
ide·vscode·编辑器
土豆.exe1 天前
IfAI v0.5.0 深度技术解析:120,000 行 Rust 打造的 AI-Native 编辑器
rust·编辑器·ai-native