94 lines
3.2 KiB
C#
94 lines
3.2 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class FloorController : MonoBehaviour
|
|
{
|
|
public static FloorController Inst;
|
|
public Material floor_mat_normal;
|
|
public Material floor_mat_transparent;
|
|
|
|
public List<MeshRenderer> floors = new List<MeshRenderer>();
|
|
private void Awake()
|
|
{
|
|
Inst = this;
|
|
}
|
|
void Start()
|
|
{
|
|
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
|
|
[ContextMenu("͸Ã÷")]
|
|
public void FloorTransparent()
|
|
{
|
|
floors.ForEach(x => x.material = floor_mat_transparent);
|
|
//SetMaterialRenderingMode(floor_mat, renderingMode: RenderingMode.Transparent);
|
|
//Color c = floor_mat.color;
|
|
//c.a = 0.4f;
|
|
}
|
|
|
|
[ContextMenu("Õý³£")]
|
|
public void FloorNormal()
|
|
{
|
|
floors.ForEach(x => x.material = floor_mat_normal);
|
|
//SetMaterialRenderingMode(floor_mat, renderingMode: RenderingMode.Opaque);
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|