【Unity】 Unity设置材质的渲染模式(RenderingMode)
在Unity中,有些少数情况下我们需要用代码来创建材质。比如说在材质非常多,而仅仅是纹理不一样的时候。
而用代码创建的材质是没有对应的资源文件的,我们也就无法使用Inspector来设置它的Rendering Mode。
关于Rendering Mode,许我稍作介绍:
材质(Material)的属性检视面板(Inspector)里的第一项为渲染模式(RenderingMode)。
渲染模式总共有四种:
渲染模式 |
意思 |
适用对象举例 |
说明 |
Opaque |
不透明 |
石头 |
适用于所有的不透明的物体 |
Cutout |
镂空 |
破布 |
透明度不是0%就是100%,不存在半透明的区域。 |
Fade |
隐现 |
物体隐去 |
与Transparent的区别为高光反射会随着透明度而消失。 |
Transparent |
透明 |
玻璃 |
适用于像彩色玻璃一样的半透明物体,高光反射不会随透明而消失。 |
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成功。
成功和不成功的结果是这样的:
【Unity】 Unity设置材质的渲染模式(RenderingMode)相关推荐
- Unity在运行时(代码中)设置材质的渲染模式(RenderingMode)
在Unity中,有些少数情况下我们需要用代码来创建材质.比如说在材质非常多,而仅仅是纹理不一样的时候. 而用代码创建的材质是没有对应的资源文件的,我们也就无法使用Inspector来设置它的Rende ...
- 【内置渲染管线】Unity标准Shader解析(渲染模式,贴图类型)
目录 一.标准Shader之四大渲染模式 1.Opaque(不透明) 2.Cutout(镂空) 3.Fade(隐现) 4.Transparent(透明) 二.标准Shader之十种贴图类型 1.标准 ...
- iOS设置tabBarItem.image图片渲染模式
2019独角兽企业重金招聘Python工程师标准>>> 设置UIImage的渲染模式: self.tabBarItem.image=[[UIImage imageNamed:imag ...
- 设置tabBarItem图片渲染
在自定义tabbar的时候回遇到这样的问题: 将美工给的图片设置为tabBarItem的selectImage,美工给的图片的是这样子的:,但是设置好以后现实的图片是这样的:. 问题原因: 系统默认对 ...
- unity Editor下批量设置材质球中的贴图部分:
批量设置材质球中Main Maps部分贴图包含 Albedo,Metallic,Nomap,Occlusion 脚本存放位置:放在在Editor目录之下 点击 window 之下的AddMateria ...
- Unity 动态循环设置材质球的图片
动态循环设置材质球的图片: public Texture[] textures;private Renderer renderer;// Use this for initializationvoid ...
- 如何实现最佳的跨平台游戏体验?Unity成亮解密实时渲染技术!
7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行.本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术.新实践,如AR.区块链.安全.大数据等. Unity大中华区技术经理 ...
- [Unity/URP学习]风格化水体渲染(一)
风格化水体的实现内容 文章目录 风格化水体的实现内容 风格化水体实现过程 1.水体颜色 1.1风格化水体颜色渐变 1.2水体深浅区域 1.2.1开启深度纹理 1.2.2深度纹理采样 1.3水体透明度 ...
- 如何实现最佳的跨平台游戏体验?Unity成亮解密实时渲染
7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行.本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术.新实践,如AR.区块链.安全.大数据等. Unity大中华区技术经理 ...
最新文章
- 第六届数学、计算机与生命科学交叉研究青年学者论坛 (大牛云集的生信会议,免注册费且提供午餐)...
- controller的frame
- 人脸分割 人脸解析 源码推荐
- 计算机无法ghost安装系统安装系统安装,品牌机、笔记本无法安装Ghost版系统原因与终极方法...
- awk中如何使用shell的环境变量
- Object C学习笔记19-枚举(转)
- 使用mysql事件_MySQL事件的使用详解
- 数据挖掘基础数学知识博客
- web.xml中,spring模块化加载xml方式
- 1002. 写出这个数 (20)-PAT乙级真题
- Atitit.android js 的键盘按键检测Back键Home键和Menu键事件
- Go语言中的指针和new(T)函数的使用
- SSM面试题,2021最新Java面试题及答案
- 计算机基础5y浏览器,5y浏览器
- BlackBerry HTML5 WebWorks 平台下,让BB10应用连接上BBM
- 将视频截取成图片的C++代码
- 一个最简单的自定义锁屏应用实现
- 【BI工具支持的数据源对照表(帆软/PowerBI/永洪/观远)】
- android 没有指南针,Android指南针指向我的位置,而不是北部
- Linux从入门到精通——基本命令