千家信息网

LWGUI是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了LWGUI是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如题,Unity有很多Shader插件经常能看见100
千家信息网最后更新 2026年11月03日LWGUI是什么

这篇文章主要介绍了LWGUI是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

如题,Unity有很多Shader插件经常能看见1000行Shader却有2000行ShaderGUI的情况,而对GUI接口不熟悉的人想改动GUI又很困难。为了写更少的代码,更简单灵活地排版ShaderGUI,我开发了这个工具:

不写一行ShaderGUI实现自定义排版

使用了内置MaterialPropertyDrawer接口,参考了内置Drawer实现,踩了无数坑之后总算能用了。使用时只需在Shader Property前加上前缀即可实现各种自定义ShaderGUI,写Shader的同时进行排版,不同Shader互不相干。Shader末尾需要添加CustomEditor "JTRP.ShaderDrawer.LWGUI" 。LWGUI内置于JTRP,Github:https%3A//github.com/Jason-Ma-233/JasonMaToonRenderPipeline/tree/master/Assets/JTRP/Editor/Drawer。

Function List:

/// 创建一个折叠组/// group:group key,不提供则使用shader property name/// keyword:_为忽略,不填和__为属性名大写 + _ON/// style:0 默认关闭;1 默认打开;2 默认关闭无toggle;3 默认打开无toggleMain(string group = "", string keyWord = "", float style = 0)    /// 在折叠组内以默认形式绘制属性/// group:父折叠组的group key,支持后缀KWEnum或SubToggle的KeyWord以根据enum显示Sub(string group)
/// n为显示的name,k为对应KeyWord,最多5组,float值为当前激活的KeyWord index(0-4)KWEnum(string group, string n1, string k1, ... string n5, string k5)
/// 以单行显示Texture,支持额外属性/// extraPropName:需要显示的额外属性名称Tex(string group = "", string extraPropName = "") /// 支持并排最多4个颜色,支持HDR/HSV/// parameter:填入HSV则将当前颜色转换为HSV颜色传入Shader,无需则填"_"/// color:可选额外颜色的property name/// 注意:更改参数需要手动刷新Drawer实例,在shader中随意输入字符引发报错再撤销以刷新Drawer实例Color(string group, string parameter, string color2, string color3, string color4) /// 以SubToggle形式显示float/// keyword:_为忽略,不填和__为属性名大写 + _ONSubToggle(string group, string keyWord = "") /// 同内置PowerSlider,非线性RangeSubPowerSlider(string group, float power = 1) /// 同内置Header,仅与LWGUI共同使用Title(string group, string header)
/// 绘制float以更改Render Queue[Queue]

目前不支持折叠组嵌套,函数名带Sub的函数一般只支持在折叠组下显示,不带Sub的函数group参数填"_"以在折叠组外显示,另外Decorator与内置Drawer不兼容,比如Header只应在默认属性上使用,在LWGUI修饰的属性上应使用Title,否则显示可能会出错。

如需实现自己的Drawer,可以参考JTRP\Editor\Drawer\ShaderDrawer.cs。SubDrawer类提供了与MainDrawer配套使用的功能。请注意:

  • 重写matchPropType以筛选特定的属性类型以绘制,返回false则会以默认方式绘制

  • 重写DrawProp以自定义方式绘制属性,JTRP\Editor\Drawer\DrawerUtility.cs提供了一些工具函数

  • GetPropertyHeight函数在使用EditorGUILayout.GetControlRect()后不起作用,一般推荐使用GetControlRect而无需理会Height

  • EditorGUI.showMixedValue控制了选择多个材质球的情况下的绘制方式

  • EditorGUIUtility.labelWidth = 0时MaterialEditor.GetRectAfterLabelWidth才会得到期望的结果

感谢你能够认真阅读完这篇文章,希望小编分享的"LWGUI是什么"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

属性 支持 函数 篇文章 颜色 方式 参考 参数 同时 大写 实例 工具 形式 情况 接口 不同 困难 一行 代码 价值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 互联网科技官网 华宇互联网科技 美国互联网科技 互联网科技公司官网 互联网科技ppt模板 米客互联网科技 互联网 视角下的科技创新 深圳前海聚择互联网科技有限公司 济南华为互联网科技产业总部基地 欧洲十大科技互联网公司 知域互联网科技有限公司大骗子 新兴科技互联网创新大赛颁奖典礼 互联网科技快讯热点 从那以后互联网科技有限公司 广州燕处互联网科技有限公司 云鲸互联网络科技有限公司 科技互联网企业在行动 伍佰万互联网科技是干嘛的 如何强化互联网金融科技 互联网佳科技有限公司 互联网科技小额贷款 互联网科技公司名称 互联网巨头投资的硬核科技 福建科技产业互联网发展 互联网第三次科技革命特征 上海创道互联网络科技有限公司 中国新注册互联网科技 保山互联网科技靠谱吗 盐城市攀科互联网科技有限公司
0