U3D 自定义shader创建Editor扩展
“工欲善其事,必先利其器”Shader学习工具篇
最近一直忙于录制关于Shader入门的视频教程,其中一个反复的机械动作就是右键创建所需要的新Shader。悲剧的是每次打开的都是Unity3D默认的Shader菜单,看过我关于Shader体系分类的同学都知道默认菜单Shader都是干什么的,每次都要选择,每次都要删除一些多余的代码,并不是新手学习所需要的简单的Vertex frage shader和简单Surface shader。
“身为一个程序员,必须有懒得气质,必须干掉这样的重复的操作!”
“怎么能让我们的可爱同学把宝贵的时间花在做重复的事情上呢?”
在这两点的驱动下,终于“功夫不负有心人”在百度的帮助下我找到了大神的神作,
http://blog.csdn.net/mobilebbki399/article/details/51869487
学习Shader的同学也可以看这位大神的文章,很多中高级的知识。
虽然大神的文章很代码流,很飘逸。总结下核心思想就是通过反射系统的类方法实现创建模板到代码文件的生成,最良心的是大神给我们提供了源码。
这里其实我们不是特别关心代码运行的机制和原理(想学习的可以看大神的帖子有三篇之多,还是比较详细的),我们只关心如何扩展我们自己的Shader模板和创建菜单不用做重复工作。
适合初学者使用的代码我已经整理好了,下面讲一下大家说明下如何使用。
1、下载附件解压
2、复制Editor到Assets目录下或者Editor下内容到工程Editor中
3、复制Templates到Assets同一级目录下
4、大功告成,在U3D中右键创建Shader
最后我们在说下如何加入自己的shader模板
1、打开Editor目录下文件
打开红框的文件,我们看到创建脚本的通用方法一共有两个参数,第一个就是模板文件的路径,第二个参数是Shader默认名称,我们再看看模板文件,打开一个如下图所示,我们只要照葫芦画瓢将自定义的模板添加到Templates目录下就可以了(这块一定要注意程序代码中的路径和文件路径要对应,一般出错就是这里)。还要说下良心大神其实已经为我们准备了147个模板,我又加了两个用于学习的模板。
最后,希望大家早日能建立自己的Shader知识体系,形成自己的Shader库。
U3D 自定义shader创建Editor扩展的更多相关文章
- Spring MVC 项目搭建 -6- spring security 使用自定义Filter实现验证扩展资源验证,使用数据库进行配置
Spring MVC 项目搭建 -6- spring security使用自定义Filter实现验证扩展url验证,使用数据库进行配置 实现的主要流程 1.创建一个Filter 继承 Abstract ...
- SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件
本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟 ...
- Android自定义视图一:扩展现有的视图,添加新的XML属性
这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...
- 使用自定义验证组件库扩展 Windows 窗体
使用自定义验证组件库扩展 Windows 窗体 1(共 1)对本文的评价是有帮助 - 评价此主题 发布日期 : 8/24/20 ...
- [Visual Studio] 自定义项目模板(.vsix扩展)
VS自定义项目模板:[2]创建VSIX项目模板扩展 听语音 | 浏览:1237 | 更新:2015-01-02 09:21 | 标签:软件开发 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师 ...
- EFCore3.1+编写自定义的EF.Functions扩展方法
前言 本文主要是讲解EF Core3.0+ 如何实现自定义的数据库扩展函数 虽然EF.Functions 提供了很多数据库函数,但是并不全面.比如加密解密.. 这样的话 我们就需要自己扩展这些数据库函 ...
- 自定义路径创建Cocos2d-x项目
自定义路径创建Cocos2d-x项目 本文介绍windows下面如何优雅的创建Cocos2d-x项目.为何称之为优雅,是因为现在网上流传的一些创建方法有一些问题.大致内容如下: l 使用VS向导创建 ...
- 教程:使用Diskpart创建、扩展或删除磁盘分区
在Windows Server环境下进行基本的磁盘操作时,管理员可以使用Disk Partition Utility或Diskpart等工具.后者是一个命令行解释器,可作为磁盘管理工具. 管理员可以使 ...
- java版微信公众平台自定义菜单创建代码实现
微信公众平台自定义菜单创建代码实现—java版 搞了两天的自定义菜单,终于搞定了,现在分享下心得,以便后来者少走弯路...... 好了,先看先微信官方的API 官方写的很详细,但是我看完后很茫然,不知 ...
随机推荐
- TODO 疑问:java中的工厂类,在实际项目中如何运用
正在读core of java,工厂类一直没搞懂.感觉和静态方法相类似,但是不知道是怎么运用在实际中. 20190711: 读了设计模式,里面给出的解读是这样的 Define an interface ...
- 优雅的退出和调用服务器close() 方法
在开发中,创建这种“友好的”退出方式的一种方法就是,将服务器的 while 循环放在一个 try-except 语句中的 except 子句中,并监控 EOFError 或 KeyboardInter ...
- redis使用例子
package test.iafclub.redis; import java.util.ArrayList; import java.util.HashMap; import java.util.I ...
- python自动华 (十五)
Python自动化 [第十五篇]:CSS.JavaScript 和 Dom介绍 本节内容 CSS javascript dom CSS position标签 fixed: 固定在页面的某个位置 rel ...
- [React] Create a Query Parameter Modal Route with React Router
Routes are some times better served as a modal. If you have a modal (like a login modal) that needs ...
- JavsScript 一些技巧方法
直接定义一个匿名函数,并立即调用: (function(){ //TODO: }()); 说明:function之前的左圆括号是必需的,如果不写这个,JavaScript解析器会试图将关键字f ...
- Activiti服务类- FormService服务类
转自:https://www.cnblogs.com/liuqing576598117/p/9814953.html 1.获取//通过流程定义ID获取表单字段集合StartFormData start ...
- BZOJ 4241: 历史研究 ( 回 滚 )
题目: 链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4241 题意:给你一个长度为n序列,m次查询,每次询问 一段区间 最大的 a[ i ...
- GAN生成式对抗网络(二)——tensorflow代码示例
代码实现 当初学习时,主要学习的这个博客 https://xyang35.github.io/2017/08/22/GAN-1/ ,写的挺好的. 本文目的,用GAN实现最简单的例子,帮助认识GAN算法 ...
- ECMAScript 5.0 基础语法(下)“稍微重点一点点”
接上篇 七.常用内置对象(复杂数据类型)(重点) (1)数组Array 创建:例 var colors = ['red','blue','green'] #推荐这样,因为简单粗暴 或:v ...