第一步:
添加一个类,挂到物体的父物体上.如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BaseWallControl : MonoBehaviour {
// Use this for initialization
void Start () {
for(int i=0;i<gameObject.transform.childCount;i++)
{
Transform wallTransform = gameObject.transform.GetChild(i);
Color mcolor = wallTransform.gameObject.GetComponent<Renderer>().material.color;
mcolor.a = 0.4f;
YPTools.SetMaterialRenderingMode(wallTransform.gameObject.GetComponent<Renderer>().material, YPTools.RenderingMode.Transparent);
wallTransform.gameObject.GetComponent<Renderer>().material.color = mcolor;
}
}
// Update is called once per frame
void Update () {
}
}
第二步,添加上面类中需要的一个工具类的方法.
public static class YPTools {
/// <summary>
/// 设置Rendering Mode
/// </summary>
/// <param name="material"></param>
/// <param name="renderingMode"></param>
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;
}
}
}