Ejemplo n.º 1
0
    public void UpdateTransparentObject()
    {
        var var = transparentDic.GetEnumerator();

        while (var.MoveNext())
        {
            TransparentParam param = var.Current.Value;
            param.isTransparent = false;
            foreach (var mat in param.materials)
            {
                Color col = mat.GetColor("_Color");
                param.currentFadeTime += Time.deltaTime;
                float t = param.currentFadeTime / fadeInTime;
                col.a = Mathf.Lerp(1, destTransparent, t);
                mat.SetColor("_Color", col);
            }
        }
    }
Ejemplo n.º 2
0
    private void AddTransparent(Renderer renderer)
    {
        TransparentParam param;

        transparentDic.TryGetValue(renderer, out param);
        if (param == null)
        {
            param = new TransparentParam();
            transparentDic.Add(renderer, param);
            param.sharedMats = renderer.sharedMaterials;
            param.materials  = renderer.materials;
            foreach (var v in param.materials)
            {
                v.shader = Shader.Find("Custom/OcclusionTransparent");
            }
        }
        param.isTransparent = true;
    }
Ejemplo n.º 3
0
    void AddTransparent(Renderer renderer)
    {
        TransparentParam param = null;

        transparentDic.TryGetValue(renderer, out param);
        if (param == null)
        {
            param = new TransparentParam();
            transparentDic.Add(renderer, param);
            //此处顺序不能反,调用material会产生材质实例。
            param.sharedMats = renderer.sharedMaterials;
            param.materials  = renderer.materials;
            foreach (var v in param.materials)
            {
                v.shader = Shader.Find("ApcShader/OcclusionTransparent");
            }
        }
        param.isTransparent = true;
    }
Ejemplo n.º 4
0
        /// <summary>
        /// 对renderer做shader替换
        /// </summary>
        /// <param name="renderer"></param>
        void AddTransparent(Renderer renderer)
        {
            TransparentParam param = null;

            // 看是不是已经替换过shader的
            transparentDic.TryGetValue(renderer, out param);
            if (param == null)
            {
                param = new TransparentParam();
                // 将新的加入字典
                transparentDic.Add(renderer, param);
                // 此处顺序不能反,调用material会产生材质实例。
                param.sharedMats = renderer.sharedMaterials;
                param.materials  = renderer.materials;
                foreach (var v in param.materials)
                {
                    // 这里选择Transparent/Bumped Diffuse作为Shader,注意要把这个Shader打包进来
                    v.shader = Shader.Find("Legacy Shaders/Transparent/Bumped Diffuse");
                }
            }
            param.isTransparent = true;
        }