如何使用代码更换模型材质球的渲染模式?

本文介绍了如何使用代码在Unity中更改模型材质球的渲染模式,包括Opaque、Cutout、Fade和Transparent四种模式。通过创建一个枚举类型表示这些模式,并编写一个静态方法SetMaterialRenderingMode,根据选择的渲染模式调整材质的混合模式、深度写入和关键词启用状态。
摘要由CSDN通过智能技术生成

如何使用代码更换模型材质球的渲染模式?

众所周知,Unity的材质球有四种不同的渲染模式,在编辑器状态下,我们可以根据点击材质球上的RenderingMode来进行不同状态的选择。
在这里插入图片描述

渲染模式意思适用对象说明
Opaque不透明石头适用于所有不透明的物体
Cutout镂空破布透明度不是0%就是100%,不存在半透明的区域
Fade隐现物体逐渐消失与Transparent的区别为高光反射会随着透明度而消失
Transparent透明玻璃适用于彩色玻璃一样的半透明物体,高光反射下不会随透明而消失

那么,我们怎么通过代码修改它们的值呢?

  1. 首先我们需要创建一个枚举类型
pubLic enum RenderingMode
{
	Opaque,
	Cutout,
	Fade,
	Transparent
}

  1. 然后写一个更换渲染模式的方法
  <summary>
///更换物体材质球染模式
/// </summary>
ii<param name="material"></param>
/// <param name="renderingMode"></param>
public static void SetMaterialRenderinglode(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 = 2458:
			break;
		case RenderingMode.Fade:
			material.SetInt(" SrcBlend"(int)UnityEngine.Rendering.BlendMode.SrcAlpha);
			material.SetInt(" DstBlend"(int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
			material.SetInt(" Zwrite",@);
			material.DisableKeyword(”ALPHATEST ON");material.EnableKeyword(” ALPHABLEND 									ON”);
			material.DisableKeyword(”ALPHAPREMULTIPLY ON");material.renderQueue = 3008:
			break;
		case RenderingMode.Transparent:
		material.SetInt(" SrcBlend"(int)UnityEngine.Rendering.BlendMode.One);
		material.SetInt("DstBlend"(int)UnityEngine.Rendering.BlendMode.neMinus5rcAlpha);
		material.SetInt(" ZWrite",@);
		material.DisableKeyword(” ALPHATEST ON”);material.DisableKeyword(” ALPHABLEND ON");
		material.EnableKeyword(”ALPHAPREMULTIPLY_ON");material.renderOueue = 3008:
			break;
		default:
		break;
}

在这里插入图片描述

最后调用此方法,就能对模型的材质球渲染方式进行修改了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值