当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 手撕数据结构---栈和队列的概念以及实现
  • go语言怎么实现dataauth?
  • “八股文”在实际工作中是助力、阻力还是空谈?
  • c程序杂谈系列(职责链模式与if_else)
  • Spring中使用到的设计模式及其源码分析
  • [红明谷CTF 2021]write_shell 1
  • UE5+OpenCV配置(Windows11系统)
  • Java从基础到高级特性及应用
  • 001.精读《Big Data: A Survey》
  • SVD用于图形处理★★★
  • element ui 修改table筛选按钮为自定义按钮
  • C# Parallel设置最大并发度
  • 【Qwen-Audio部署实战】Qwen-Audio-Chat模型之FastApi部署实战
  • Fréchet Inception Distance(FID)图像生成技术指标
  • 《AM-Bi-LSTM: Adaptive Multi-Modal Bi-LSTM for Sequential Recommendation》
  • 收藏网友的 源程序下载网
  • 【Leetcode】104. 二叉树的最大深度
  • 2017 前端面试准备 - 收藏集 - 掘金
  • css系列之关于字体的事
  • FastReport在线报表设计器工作原理
  • Twitter赢在开放,三年创造奇迹
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 包装类对象
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 世界上最简单的无等待算法(getAndIncrement)
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • postgresql行列转换函数
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • # 计算机视觉入门
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #DBA杂记1
  • (1)bark-ml
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (7)STL算法之交换赋值
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (三)c52学习之旅-点亮LED灯
  • (五)MySQL的备份及恢复
  • (转)h264中avc和flv数据的解析
  • (转)Linux下编译安装log4cxx
  • 、写入Shellcode到注册表上线
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net 连接达梦数据库开发环境部署
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET周刊【7月第4期 2024-07-28】
  • @angular/cli项目构建--Dynamic.Form
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [120_移动开发Android]008_android开发之Pull操作xml文件