• unity 多个materials 赋值


    如果有静态图片,属性修改成sprite

     Material[] newBufMat = new Material[newPlayer.GetComponent().materials.Length];
            for (int i = 0; i < 2; i++)
            {
                newBufMat[i] = new Material(Shader.Find("Standard"));
                newBufMat[i].color = new Color(R / 255, G / 255, B / 255, 1);
            }


            newPlayer.GetComponent().materials = newBufMat;

    //更改渲染模式,为透明

    SetMaterialRenderingMode(newBufMat[1], RenderingMode.Transparent);

    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;
            }
        }

  • 相关阅读:
    新版 Next.js 从入门到入土
    网络安全(黑客)——自学2024
    Python基础小知识问答系列-匿名函数
    Spring Cloud Gateway网关中各个过滤器的作用与介绍
    【C语言】内存函数的详细教学和模拟实现
    『第九章』雨燕新量子引擎:结构化并发
    CMD 命令和 ENTRYPOINT 命令的区别
    Flutter IOS 前后台切换主题自动变化的问题
    高效使用搜索引擎
    674. 最长连续递增序列
  • 原文地址:https://blog.csdn.net/frankxixu/article/details/126670259