继承自ShaderGUI
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Collections.Generic;
using System;public class ShaderGUITest : ShaderGUI
{private MaterialProperty[] _properties;private int defaultWidth = 2048;private int defaultHeight = 2048;public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties){_properties = properties ;// render the default guibase.OnGUI(materialEditor, properties);MaterialProperty mytest = FindProperty("_MainTex",  _properties) ;Texture tex = mytest.textureValue;string texPath = AssetDatabase.GetAssetPath(mytest.textureValue.GetInstanceID());Material targetMat = materialEditor.target as Material;// see if redify is set, and show a checkboxbool CS_BOOL = Array.IndexOf(targetMat.shaderKeywords, "CS_BOOL") != -1;EditorGUI.BeginChangeCheck();//检查面板上cs_bool的开关变化CS_BOOL = EditorGUILayout.Toggle("CS_BOOL", CS_BOOL);if (EditorGUI.EndChangeCheck()){//设置全局着色器关键字。targetMat.EnableKeyword("CS_BOOL");}else{//取消设置全局着色器关键字。targetMat.DisableKeyword("CS_BOOL");}if (tex.width != defaultWidth){string errorStr = string.Format("{0}: 大小不等于2048,宽为{1},格式为{0},请检查,地址{3}",tex.name,tex.width,texPath);EditorGUILayout.HelpBox(errorStr, MessageType.Error);}}
}

ongui就是画在面板上的东西

MaterialEditor

可以获取材质的东西

MaterialProperty

材质的一些参数

MaterialProperty mytest = FindProperty("_MainTex",  _properties) ;

获取shader中_MainTex的属性

啥叫设置全局着色器关键字。

 #pragma shader_feature CS_BOOL

Unity shader 编辑器扩展类 ShaderGUI-腾讯游戏学堂

ShaderGUI的学习相关推荐

  1. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板

    写在之前 Shader变体.Shader属性定义技巧.自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用 ...

  2. java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】

    类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...

  3. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  4. FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器

    文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...

  5. FastAI 课程学习笔记 lesson 1:宠物图片分类

    文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...

  6. 深度学习学习指南-工具篇

    colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...

  7. Redis学习之路(一)--下载安装redis

    redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...

  8. python内置库之学习configparser库(一)

    python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...

  9. 前端Vue学习之路(二)-Vue-router路由

    Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...

最新文章

  1. 【怎样写代码】向现有类型“添加”方法 -- 扩展方法(四):在编译时绑定扩展方法的规则
  2. hibernate 逆向工程
  3. spring @Value 获取配置文件为 null 常见的几种方式
  4. 弯曲圆波导matlab_弯曲波导结构设计
  5. OpenCV使用不同的决策树decision trees的实例(附完整代码)
  6. 机器人点焊枪接线_用于焊接机器人焊枪工具点及工件坐标系标定装置及方法与流程...
  7. python出现—with the features you requested: lxml. Do you need to install a parser library?
  8. 计算机网络要点,计算机网络要点
  9. 关于c++的return
  10. mouseover和mouseenter的区别?
  11. AD画PCB常规问题分析
  12. 异构数据库、异构数据源、分布式数据库三者的辨析区别
  13. 美国大学计算机专业排名2019,2019年美国大学计算机排名
  14. elementUI-收起与展开
  15. pythongui界面管理系统_Python实现GUI学生信息管理系统
  16. 管理系统联系人之补充
  17. 【iPhone自定义铃声】iPhone设置炫酷的电话铃声、闹钟铃声-私人定制铃声-摆脱枯燥单一的iPhone背景铃声-操作超级简单
  18. 网维大师不能启动虚拟盘服务器,服务器网络模块导致网维大师无盘程序无法启动?...
  19. 【分布式框架】深入理解分布式之缓存击穿
  20. mysql、sql yog安装和常见的mysql语句

热门文章

  1. Pandas数据分析库(2)Python数据分析
  2. 【语音识别】语言模型LM
  3. 《Java程序设计》课程代码题(九)
  4. Jrebel最新激活破解方式(持续更新) 转
  5. Java架构师成长之路
  6. 测试开发系列之——css
  7. java设置httpheaders_HttpClient 请求添加Header头部信息
  8. 公司企业兔年祝福元旦祝福贺卡邀请函模板!
  9. 使用ps制作端午海报
  10. 矮轴机械键盘用起来会更爽吗?Keychron K1告诉你答案