Unity动态改变材质球Alpha值的一些方法

要做物体的渐隐渐现,一般都是调材质球。

当然,也可以不用代码,创建个动画状态机,直接对Alpha通道K帧,可以做到渐隐渐现效果。

如果是代码的话,如下咯:

using UnityEngine;
using DG.Tweening;

/*
 * 
 *  Writer:June
 * 
 *  Date: 2020.6.3
 * 
 *  Function:更改材质球的渲染层级,并渐渐消失
 * 
 *  Remarks:注意,要先导入动画插件——DoTween
 * 
 */


public class JuneMaterial : MonoBehaviour 
{
    /// <summary>
    /// 物体材质球
    /// </summary>
    private Material material;
    /// <summary>
    /// 消失时间
    /// </summary>
    public float fadeTime = 1f;


    private void Start()
    {
        material = GetComponent<MeshRenderer>().material;
        //当渲染层级不是3000的时候,将其设为3000
        if (material.renderQueue != 3000)
        {
            material.SetFloat("_Mode", 3);
            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;
        }
        //材质球颜色的alpha值改变
        //注意:如果你的材质球没有Color的,会报没有_Color属性的错...
        material.DOColor(new Color(1, 1, 1, 0), fadeTime);
    }


}

不过这样可能有些模型会出现问题,就比如切换渲染层级的时候,整个模型都好像透视了。

我是这样解决的:新建个材质球,先让材质球做alpha值从1->0的动画,再把材质球赋值给目标模型,这样也可以到达渐渐消失的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值