【Unity】Shader自定义GUI笔记

本文档详细记录了在Unity中自定义ShaderGUI的过程,包括制作Shader、创建C#脚本、画布布局、API使用、折叠功能实现以及实战应用,旨在帮助开发者更好地理解和定制Shader的GUI界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ShaderGUI笔记

0、效果

在这里插入图片描述

可折叠展开,自定义排版

1、首先做好一个Shader,手写、SG、ASE都行,节点名称命名要规范!

打开Shader代码,在结尾添加上

CustomEditor "这里是你创建的C#脚本的名字(类名)" 
//这样就可以关联在一起了 位置随意 不用填写路径 注意:要放在大括号里面

2、创建一个C#脚本

继承自ShaderGUI类

//             自定义类名  Shader 关联用的就是这个名字
public class ShaderGUI01 : ShaderGUI
{
}

3、画布绘制

//重写 OnGUI类
public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
{
    //这里放UI的代码
}

4、常用API

布局类 (在OnGUI类里面使用)
//创建一个矩形方框作为画布  读取自定义的宽高、标题、样式
GUI.Box(rect, title, style);

  //创建一个矩形 可自定义位置          偏移值            长宽
var ToggleRect = new Rect(rect.x + 4f, rect.y + 4f, 20f, 20f);
//垂直布局                              这里的参数可以按需选择
EditorGUILayout.BeginVertical(EditorStyles.helpBox);

//垂直布局结束
EditorGUILayout.EndVertical();

//相当于 花括号 {  }
//必须成对使用
//可以套娃
//水平布局                             这里的参数可以按需选择
EditorGUILayout.BeginHorizontal(EditorStyles.helpBox);

//水平布局结束
EditorGUILayout.EndHorizontal();

//相当于 花括号 {  }
//必须成对使用
//可以套娃

还有滚动布局这些,用法都差不多

组件类
//标签组件 顶格显示
GUILayout.Label("text");
//前缀标签组件
EditorGUILayout.PrefixLabel("自定义文本");
//创建按钮组件样式                              按钮宽度 其他选项可以按需添加 
public GUILayoutOption[] BtnStyle = new[] {GUILayout.Width(70)//在这里输入 ,GUILayout. 会有其他选项可选
                                          }

//按钮组件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值