欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Unity]代码改变材质强度实现闪烁效果

程序员文章站 2022-06-10 23:26:49
...

 

材质球的Shader为 Unity自带的Standard

颜色都是白色(FFFFFF)

 

代码改变emission intensity的值实现闪烁效果

 

代码中的_emissionColorValue的alpha透明值 不能使得闪烁 透明。

Inspector视图 改变 材质球 Rendering Mode为transparent或Cutout或Fade,MainMaps的Albedo设置图片并且颜色的Alpha值不能过大或过小,才能看到透明材质。

[Unity]代码改变材质强度实现闪烁效果

[Unity]代码改变材质强度实现闪烁效果

材质的Emission不勾选,就不会有效果

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MATERAILINTENSITY : MonoBehaviour
{
    /// <summary>
    /// 闪烁材质球
    /// </summary>
    public Material haloMaterial;
    /// <summary>
    /// 材质 颜色 包含 alpha透明值,闪烁颜色
    /// </summary>
    public Color _emissionColorValue;
    /// <summary>
    /// 材质强度 期望值
    /// </summary>
    public float desiredValue = 0.5F;
    /// <summary>
    /// 材质强度 当前值
    /// </summary>
    public float _intensity = 0.5F;
    /// <summary>
    /// update 每帧 改变值
    /// </summary>
    public float decrease = 0.005F;
    /// <summary>
    /// 闪烁方向 1 为 从0-0.5方向,-1为0.5-0方向
    /// </summary>
    private int dir = 1;

    private void Start()
    {
        haloMaterial.SetVector("_EmissionColor", _emissionColorValue * 0f);
        _intensity = 0;
    }

    // Update is called once per frame
    void Update()
    {
        haloMaterial.SetVector("_EmissionColor", _emissionColorValue * _intensity);
        /*_intensity = _intensity - decrease;
        if (Input.GetKey(KeyCode.S))
        {
            _intensity = desiredValue;
            //_intensity-=0.1F;
        }
        if (_intensity < 0)
        {
            _intensity = 0.5F;
        }*/

        if (dir == 1)
        {
            _intensity = _intensity + decrease;
            if (_intensity > desiredValue)
            {
                dir = -1;
            }
        }
        else if (dir == -1)
        {
            _intensity = _intensity - decrease;
            if (_intensity < 0)//-0.1f
            {
                dir = 1;
            }
        }

    }//
}//https://forum.unity.com/threads/change-a-materials-emission-color-intensity-property.611206/
 

材质球-Inspector-Emission勾选-Color为0,0,0,不要选择其他颜色或者点击,出错了,重新新建材质球 重新设置。

如果材质球不闪烁在Project视图下点击一下。

或者是Emission勾选,Global Illumination为Realtime或none,而不是Baked。

[Unity]代码改变材质强度实现闪烁效果

 

 

相关标签: Unity