分享两个自制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的更多相关文章

  1. Unity查找子物体的方式-怎么查找GameObject

    Unity动态查找物体 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创 ...

  2. Unity 通用透明物体漫反射Shader(双面渲染&多光源&光照衰减&法线贴图&凹凸透明度控制)

    Shader "MyUnlit/AlphaBlendDiffuse" { Properties { _Color("Color Tint(贴图染色)",Colo ...

  3. Unity使用transform.Translate()移动子物体时遇到的小问题

    Unity使用transform.Translate()移动子物体时遇到的小问题 情况大概是这样:父物体A下有子物体B,希望使B在本地坐标系下移动1单位. B物体挂脚本代码如下: transform. ...

  4. unity中使用Highlighting System v4.0插件给物体添加高亮

    插件:Highlighting System v4.0 操作:在摄像机上挂上HighlightingRenderer脚本 脚本目录在\Assets\Plugins\HighlightingSystem ...

  5. 怎么在ZBrush中通过遮罩得到子物体

    ZBrush® 中通过遮罩为模型添加子物体的方法简单且方便,我们可以通过按住Ctrl键绘制遮罩结合相关命令创建具有抽出厚度的模型提取出作为子物体附在模型表面.本文将详细介绍在Zbrush中如何通过遮罩 ...

  6. 【Unity Shaders】Vertex & Fragment Shader入门

    写在前面 三个月以前,在一篇讲卡通风格的Shader的最后,我们说到在Surface Shader中实现描边效果的弊端,也就是只对表面平缓的模型有效.这是因为我们是依赖法线和视角的点乘结果来进行描边判 ...

  7. ZBrush通过遮罩得到子物体

    ZBrush 中通过遮罩为模型添加子物体的方法简单且方便,我们可以通过按住Ctrl键绘制遮罩结合相关命令创建具有抽出厚度的模型提取出作为子物体附在模型表面.本文将详细介绍在Zbrush中如何通过遮罩得 ...

  8. 获取子物体数量---Transform.childCount

    如何判断一个物体下是否有子物体?getchild(0)!=null?显然不可取 那去获取拿到子物体数量?transform.GetChildCount();可以解决 但在新版本中已被弃用,可用tran ...

  9. HackSix 为ViewGroup的子视图添加悦目的动画效果

    1.默认情况下他,添加到viewGrop的子视图是直接显示出来的.有一个比较简单的方法可以为这个过程增加动画效果. 2.知识点:     给子视图添加动画效果就用:LayoutAnimationCon ...

随机推荐

  1. Jmeter对数据库批量增删改查

    本文主要的内容是使用Jmeter对数据库进行数据的操作,包括单条语句的增删改查,多条语句的增删改查,本文主要介绍操作流程,关于流程的运作原理,对原理感兴趣的同学可自行查阅资料. 首先需要准备一个数据库 ...

  2. os shutil 模块

    OS --- 操作系统接口 os.system(command) # 在python中执行系统指令 os.popen(command[, mode[, bufsize]]) #os.popen() 方 ...

  3. JS 中一些高效的魔法运算符

    这两天有同事说我挺久没更新文章了,不过最近一段时间确实有点忙,一直在忙着两个活动中心的改版,没什么时间来更新文章.今天终于抽空可以写一写. JavaScript 现在每年都会发一个新版本,里面也会新增 ...

  4. ML.NET 示例:图像分类模型训练-首选API(基于原生TensorFlow迁移学习)

    ML.NET 版本 API 类型 状态 应用程序类型 数据类型 场景 机器学习任务 算法 Microsoft.ML 1.5.0 动态API 最新 控制台应用程序和Web应用程序 图片文件 图像分类 基 ...

  5. Windows系统之间文件互传

    1)利用Windows自带的文件共享服务 本次试验以Win7为服务器端,win10为客户端 1.确保Win7服务端开启对应的服务及开放相应的端口号 进入命令行界面,输入netstat -an,查看44 ...

  6. hdu4022 map+multiset

    题意:       给你一些敌人的坐标,每次让你删除某一行或者某一列,问你每一次操作能删除多少人..... 思路:       map和multiset的完美结合,吧set定义到map里,达到一个一对 ...

  7. 病毒木马查杀实战第021篇:Ring3层主动防御之编程实现

    前言 我们这次会依据上次的内容,编程实现一个Ring3层的简单的主动防御软件.整个程序使用MFC实现,程序开始监控时,会将DLL程序注入到explorer.exe进程中,这样每当有新的进程创建,程序首 ...

  8. Linux-鸟菜-6-文件与目录管理

    Linux-鸟菜-6-文件与目录管理 这章主要是说一些对目录和文件的增删改查等等命令. .    代表当前目录 ..    代表前一个目录   / 的 . 和 .. 一样 -    代表前一个工作目录 ...

  9. Bugku-flag.php

    flag.php 目录 flag.php 题目描述 解题过程 题目描述 点了login咋没反应 提示:hint 解题过程 fuzz 打开发现是个登录页面,点击login没反应,看了源码,action= ...

  10. python 读写 HDFS

    pandas dataframe写入hdfs csv文件的两种方式: 1. from hdfs.client import Client cleint.write(hdfs_url, df.to_cs ...