Unity中修改3D模型的透明度,实现3D模型渐变出现的效果(附源码)

转载链接:Shader代码转载地址

1、效果图

这里写图片描述

2、简述

这里是通过改变材质的透明度来实现 渐入渐出的效果,使用系统自带的shader似乎是无法达到这样的效果,如设置shader为Standard,Rendering Mode 设置为Transparent,将透明度调制0,最后的效果还是看得到模型。

3、 Shader代码

Shader "Transparent/VertexLit with Z" {
    Properties{
        _Color("Main Color", Color) = (1,1,1,1)
        _SpecColor("Spec Color", Color) = (1,1,1,0)
        _Emission("Emissive Color", Color) = (0.15,0.15,0.15,0)
        _Shininess("Shininess", Range(0.1, 1)) = 0.7
        _MainTex("Base (RGB) Trans (A)", 2D) = "white" {}
    }

        SubShader{
        Tags{ "RenderType" = "Transparent" "Queue" = "Transparent" }
        // Render into depth buffer only
        Pass{
        ColorMask 0
    }
        // Render normally
        Pass{
        ZWrite Off
        Blend SrcAlpha OneMinusSrcAlpha
        ColorMask RGB
        Material{
        Diffuse[_Color]
        Ambient[_Color]
        Shininess[_Shininess]
        Specular[_SpecColor]
        Emission[_Emission]
    }
        Lighting On
        SetTexture[_MainTex]{
        Combine texture * primary DOUBLE, texture * primary
    }
    }
    }
}

4、逻辑代码

很简单的一段代码,就不写注释了

public class NewBehaviourScript : MonoBehaviour
{

    private Material _mat;
    private float _alpha = 0;
    private bool _isFadeIn = true;
    void Start()
    {
        _mat = this.GetComponent<Renderer>().material;
        _mat.color = new Color(0, 1, 0, _alpha);
    }

    void Update()
    {
        _alpha += (_isFadeIn ? 1 : -1) * Time.deltaTime / 2;
        _mat.color = new Color(0, 1, 0, _alpha);
        if (_alpha > 1) _isFadeIn = false;
        if (_alpha < 0) _isFadeIn = true;
    }
}

5、Demo下载

使用的是unity5.5.1版本,如果打不开,请拷贝上面代码进行测试

点击下载

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值