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