网站运营推广的方法有哪些,福田大型商城网站建设,南充市建设局网站,网上做宣传的网站在Unity中#xff0c;有些少数情况下我们需要用代码来创建材质。比如说在材质非常多#xff0c;而仅仅是纹理不一样的时候。 而用代码创建的材质是没有对应的资源文件的#xff0c;我们也就无法使用Inspector来设置它的Rendering Mode。 关于Rendering Mode#xff0c;许我… 在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 () {// 设置材质的颜色为半透明的颜色才能看到效果如果材质有贴图那么贴图也必须是半透明的GetComponentMeshRenderer ().material.color new Color (1, 0, 0, 0.5f);SetMaterialRenderingMode (GetComponentMeshRenderer ().material, RenderingMode.Transparent);
} 注意测试前先在目标物体后放置一个其他物体如果未添加代码前不可以看到后面物体而添加之后可以了那么就表示此代码设置RenderingMode成功。 成功和不成功的结果是这样的 【End】 http://www.rainier.net.cn/cpys/xnfzsyl/lxl/20160331175407