赞
踩
工程中遇到了这样的问题,需要进行调整物体的透明度。
通过查找资料发现,需要将Object的Rendering Mode调整为Fade才可以进行透明度a的调整。
因此,调整物体的透明度分为两步骤:
修改Rendering Mode
修改material的color属性
将物体调成实体也是同样的操作
代码如下,夹带了一些VRTK的手柄监视,就不删去了。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using VRTK; using UnityEngine.Animations; public class Car_boom : MonoBehaviour { public GameObject carboom; public GameObject driver; public VRTK_ControllerEvents controllerEvents; public bool judge = false; 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; } } // Start is called before the first frame update void Start() { driver = GameObject.Find("Gengon001"); controllerEvents = GetComponent<VRTK_ControllerEvents>(); //Setup controller event listeners GetComponent<VRTK_ControllerEvents>().StartMenuPressed += new ControllerInteractionEventHandler(DoStartMenuPressed); } // Update is called once per frame void Update() { } private void DoStartMenuPressed(object sender, ControllerInteractionEventArgs e) { if(!judge)//透明 { //透明与renderingmode SetMaterialRenderingMode(driver.GetComponent<MeshRenderer>().material,RenderingMode.Fade); Color cr = driver.GetComponent<MeshRenderer>().material.color; cr.a = 100f/255f; driver.GetComponent<MeshRenderer>().material.color = cr; judge = true; } else//实体 { //透明与renderingmode SetMaterialRenderingMode(driver.GetComponent<MeshRenderer>().material,RenderingMode.Opaque); Color cr = driver.GetComponent<MeshRenderer>().material.color; cr.a = 255f/255f; driver.GetComponent<MeshRenderer>().material.color = cr; judge = false; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。