股票分析网站可以做推广吗,淮安网站建设公司,和幼儿做网站,搜索技巧的网站前言#xff1a;
当我们在制作通用Shader的时候#xff0c;避免不了许多参数混杂在一起#xff0c;尽管在材质面板已经使用过Header标签来区分#xff0c;但是较长的Shader参数就会导致冗余#xff0c;功能块不够简约明了#xff0c;如图#xff1a; 对于Shader制作者来…前言
当我们在制作通用Shader的时候避免不了许多参数混杂在一起尽管在材质面板已经使用过Header标签来区分但是较长的Shader参数就会导致冗余功能块不够简约明了如图 对于Shader制作者来说Shader的所有功能都了解但是对于项目的同组伙伴来说我们还需要教他们这些参数的作用那些模块是干什么的很不友好
于是乎扩展Shader的显示界面就变得尤为重要如图 ShaderUI界面的扩展其实也是一种编辑器扩展和普通的编辑器扩展脚本的编写方式基本一致都可是使用EditorLayout这些UI自定义布局方法。 OnGUI
首先这是编辑器扩展需要调用编辑器的命名空间同时需要继承ShaderGUI函数 而其中最重要的就是重写OnGUI函数 可以看到的是这个函数会传递两个参数进来MaterialEditor则是当前材质的编辑MaterialProperty[]数组则包含了Shader中在Property里定义的所有属性下标从0开始剩余的就和普通的编辑器扩展一样了。
一般在改变UI界面的属性时对应的material也应该设置属性值则使用EditorGUI.BeginChangeCheck和EditorGUI.EndChangeCheck可以检测属性值是否改变并执行相应的操作了
基础的编辑器扩展可以看我之前的文章Unity拓展编辑器基础知识