unity给子物体添加Shader
分享两个自制Shader:http://pan.baidu.com/s/1nuRcF2L
Shader存放路径:\Assets\Resources\Shader\
定义Shader类型:
public enum EnumFbxType
{
Default,
TouMing,
GaoLiang,
}
加载指定Shader:
private static Shader myTouMing = Shader.Find("My/TouMing");
private static Shader myDiffuse = Shader.Find("My/Diffuse");
设置物体的Shader:
/// <summary>
/// 设置模型材质
/// </summary>
/// <param name="_obj">模型</param>
/// <param name="_fbxType">材质类型</param>
public static void SetObjFbxShader(GameObject _obj, EnumFbxType _fbxType)
{
if (_obj == null) return;
Renderer r = _obj.GetComponent<Renderer>();
if (r == null) return;
Material[] mater = r.materials;
switch (_fbxType)
{
case EnumFbxType.Default:
foreach (Material m in mater)
{
if (m.color.a == 1 || m.color.a == 0.123f)
{
m.shader = myDiffuse;
m.SetFloat("_Glossiness", 0.3f);
m.SetFloat("_Metallic", 0);
m.SetColor("_Emission", Color.black);
}
else
{
m.shader = myTouMing;
m.SetColor("_Emission", Color.black);
}
}
break;
case EnumFbxType.TouMing:
foreach (Material m in mater)
{
m.shader = myTouMing;
m.SetColor("_Emission", Color.black);
if (m.color.a == 1)
{
Color color = m.color;
color.a = 0.123f;
m.color = color;
}
}
break;
case EnumFbxType.GaoLiang:
foreach (Material m in mater)
{
m.shader = myDiffuse;
m.SetFloat("_Glossiness", 1);
m.SetFloat("_Metallic", 0.2f);
m.SetColor("_Emission", Color.red);
}
break;
}
}
unity给子物体添加Shader的更多相关文章
- Unity查找子物体的方式-怎么查找GameObject
Unity动态查找物体 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创 ...
- Unity 通用透明物体漫反射Shader(双面渲染&多光源&光照衰减&法线贴图&凹凸透明度控制)
Shader "MyUnlit/AlphaBlendDiffuse" { Properties { _Color("Color Tint(贴图染色)",Colo ...
- Unity使用transform.Translate()移动子物体时遇到的小问题
Unity使用transform.Translate()移动子物体时遇到的小问题 情况大概是这样:父物体A下有子物体B,希望使B在本地坐标系下移动1单位. B物体挂脚本代码如下: transform. ...
- unity中使用Highlighting System v4.0插件给物体添加高亮
插件:Highlighting System v4.0 操作:在摄像机上挂上HighlightingRenderer脚本 脚本目录在\Assets\Plugins\HighlightingSystem ...
- 怎么在ZBrush中通过遮罩得到子物体
ZBrush® 中通过遮罩为模型添加子物体的方法简单且方便,我们可以通过按住Ctrl键绘制遮罩结合相关命令创建具有抽出厚度的模型提取出作为子物体附在模型表面.本文将详细介绍在Zbrush中如何通过遮罩 ...
- 【Unity Shaders】Vertex & Fragment Shader入门
写在前面 三个月以前,在一篇讲卡通风格的Shader的最后,我们说到在Surface Shader中实现描边效果的弊端,也就是只对表面平缓的模型有效.这是因为我们是依赖法线和视角的点乘结果来进行描边判 ...
- ZBrush通过遮罩得到子物体
ZBrush 中通过遮罩为模型添加子物体的方法简单且方便,我们可以通过按住Ctrl键绘制遮罩结合相关命令创建具有抽出厚度的模型提取出作为子物体附在模型表面.本文将详细介绍在Zbrush中如何通过遮罩得 ...
- 获取子物体数量---Transform.childCount
如何判断一个物体下是否有子物体?getchild(0)!=null?显然不可取 那去获取拿到子物体数量?transform.GetChildCount();可以解决 但在新版本中已被弃用,可用tran ...
- HackSix 为ViewGroup的子视图添加悦目的动画效果
1.默认情况下他,添加到viewGrop的子视图是直接显示出来的.有一个比较简单的方法可以为这个过程增加动画效果. 2.知识点: 给子视图添加动画效果就用:LayoutAnimationCon ...
随机推荐
- manjaro找不到默认键盘布局
1 问题描述 manjaro安装fcitx后,没有默认的键盘布局,不是这样: 而是: 2 解决方案 解决方案在启动fcitx时就已经有提示了: 缺少了libjson-c这个库,直接使用pacman搜索 ...
- 嗝,我饱了——IDEA食用指南
1 概述 IDEA全称IntelliJ IDEA,主要用于Java开发的IDE,代码自动提示,重构,JUnit,代码分析等的功能非常牛逼,这篇文章首先介绍目前为止IDEA最新版本的特性,然后从UI,常 ...
- redhat 7.6 安装Python3后配置 yum pip3 升级openssl
安装python3后需要重新配置yum 配置yum vim /usr/bin/yum #! /usr/bin/python #修改前#! /usr/bin/python2 #修改后 vim /usr/ ...
- 7.bug生命周期
new:测试发现并提交bug,状态为new/active; open: 分配bug到开发人员,状态为open: fixed:开发人员处理完bug,将状态改为fixed: closed/reopen:测 ...
- Wordpress学习链接整理
Wordpress学习链接整理 获取和使用 WordPress 中的全局变量 wordpress模板加载顺序汇总 WordPress载入页面时的模板加载机制(图) WordPress 条件判断标签及用 ...
- POJ2570 二进制,位运算,Floyd
题意: 给你一个有向图,两点之间有多种连接方式,然后每次询问都问你点A,B之间有哪些方式可以到达,每个小字母是一个方式. 思路: 很巧妙的位运算和Floyd应用,借助Floyd ...
- DVWA之File Upload (文件上传漏洞)
目录 Low: Medium: 方法一:抓包修改文件的type 方法二:00截断 High: Impossible : Low: 源代码: <?php if( isset( $_POST[ 'U ...
- UVA11636复制粘贴
#include<stdio.h> int main() { int Cas = 1 ,n; while(~scanf("%d" ,&n) & ...
- Listview滑动时不加载数据,停下来时加载数据,让App更优
http://blog.csdn.net/yy1300326388/article/details/45153813
- <input type="file" id="fileID">文本框里的值清空方法
一般情况下,不允许通过脚本来对文件上传框赋值. 下面是一个变通的方法.就是创建一个新的input type="file" 把原来的替换掉. <!DOCTYPE html PU ...