【Unity】 Unity设置材质的渲染模式(RenderingMode)
来源:互联网 发布:淘宝店铺托管 编辑:程序博客网 时间:2024/04/26 13:43
在Unity中,有些少数情况下我们需要用代码来创建材质。比如说在材质非常多,而仅仅是纹理不一样的时候。
而用代码创建的材质是没有对应的资源文件的,我们也就无法使用Inspector来设置它的Rendering Mode。
关于Rendering Mode,许我稍作介绍:
材质(Material)的属性检视面板(Inspector)里的第一项为渲染模式(RenderingMode)。
渲染模式总共有四种:
渲染模式
意思
适用对象举例
说明
Opaque
不透明
石头
适用于所有的不透明的物体
Cutout
镂空
破布
透明度不是0%就是100%,不存在半透明的区域。
Fade
隐现
物体隐去
与Transparent的区别为高光反射会随着透明度而消失。
Transparent
透明
玻璃
适用于像彩色玻璃一样的半透明物体,高光反射不会随透明而消失。
有时候我们需要在程序代码(Script)中设置材质的渲染模式,这时候我们该怎么做呢?这时候可以通过添加以下代码来实现。
public enum RenderingMode { Opaque, Cutout, Fade, Transparent,}public static void SetMaterialRenderingMode (Material material, RenderingMode renderingMode){ switch (renderingMode) { case RenderingMode.Opaque: material.SetInt ("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt ("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero); material.SetInt ("_ZWrite", 1); material.DisableKeyword ("_ALPHATEST_ON"); material.DisableKeyword ("_ALPHABLEND_ON"); material.DisableKeyword ("_ALPHAPREMULTIPLY_ON"); material.renderQueue = -1; break; case RenderingMode.Cutout: material.SetInt ("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt ("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero); material.SetInt ("_ZWrite", 1); material.EnableKeyword ("_ALPHATEST_ON"); material.DisableKeyword ("_ALPHABLEND_ON"); material.DisableKeyword ("_ALPHAPREMULTIPLY_ON"); material.renderQueue = 2450; break; case RenderingMode.Fade: material.SetInt ("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); material.SetInt ("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); material.SetInt ("_ZWrite", 0); material.DisableKeyword ("_ALPHATEST_ON"); material.EnableKeyword ("_ALPHABLEND_ON"); material.DisableKeyword ("_ALPHAPREMULTIPLY_ON"); material.renderQueue = 3000; break; case RenderingMode.Transparent: material.SetInt ("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt ("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); material.SetInt ("_ZWrite", 0); material.DisableKeyword ("_ALPHATEST_ON"); material.DisableKeyword ("_ALPHABLEND_ON"); material.EnableKeyword ("_ALPHAPREMULTIPLY_ON"); material.renderQueue = 3000; break; }}使用方法:
void Start () { // 设置材质的颜色为半透明的颜色才能看到效果,如果材质有贴图,那么贴图也必须是半透明的 GetComponent<MeshRenderer> ().material.color = new Color (1, 0, 0, 0.5f); SetMaterialRenderingMode (GetComponent<MeshRenderer> ().material, RenderingMode.Transparent);}
注意:测试前先在目标物体后放置一个其他物体,如果未添加代码前不可以看到后面物体,而添加之后可以了,那么就表示此代码设置RenderingMode成功。
成功和不成功的结果是这样的:
阅读全文
0 0
- 【Unity】 Unity设置材质的渲染模式(RenderingMode)
- Unity在运行时(代码中)设置材质的渲染模式(RenderingMode)
- Unity在运行时(代码中)设置材质的渲染模式(RenderingMode)
- Unity代码设置"Standard (Specular setup)"的渲染模式(RenderingMode)
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- 设置UIImage的渲染模式:UIImage.renderingMode
- unity3D学习笔记之六 Material(材质)的几种RenderingMode(渲染模式)
- iOS设置UIImage的渲染模式:UIImage.renderingMode
- 转载:设置UIImage的渲染模式:UIImage.renderingMode
- DOM对象
- DVB系统概述
- Linux笔记(5)-文件权限
- js中的作用域及私有变量
- json4s 嵌套使用
- 【Unity】 Unity设置材质的渲染模式(RenderingMode)
- POJ1753 Flip Game & POJ2965 The Pilots Brothers' refrigerator (DFS)
- iOS之Cocoapods安装
- The Dragon of Loowater
- c++ 如何高效传递对象,避免不必要的复制
- 命令提示符进入mysql
- 1603 生活的烦恼
- 关于 Glide 加载图片圆角问题
- PCB设计基本概念