3

我想来回更改颜色的 alpha 值(透明度):

private void Awake()
{
    material =  gameObject.GetComponent<Renderer>().material;   
    oColor   = material.color; // the alpha here is 0
    nColor   = material.color;
    nColor.a = 255f;
}
private void Update()
{
    material.color = Color.Lerp(oColor, nColor, Mathf.PingPong(Time.time, 1));
}

这不行,颜色瞬间变成白色,一直闪烁原来的颜色。我正在关注这个

4

2 回答 2

1

事实上,alpha颜色Material0255,但是这些值C#0转换为1,使 1 等于255。这是我前段时间做的一个脚本,也许你可以使用它:

public class Blink : MonoBehaviour 
{
    public Material m;
    private Color c;
    private float a = .5f;
    private bool goingUp;

    private void Start()
    {
        c = m.color;
        goingUp = true;
    }
    private void Update()
    {
        c.a = goingUp ? .03f + c.a : c.a - .03f;

        if (c.a >= 1f) 
            goingUp = false;
        else if (c.a <= 00)
            goingUp = true;

        m.color = c;
    }
}
于 2017-05-12T19:37:40.163 回答
0

你可以试试这个:

void FixedUpdate ()
{
    material.color = new Color (0f, 0.5f, 1f, Mathf.PingPong(Time.time, 1));
}

这里的颜色是蓝色, (RGB 0, 128, 255) “Mathf.PingPong(Time.time, 1) 处理 alpha。

当您在检查器中将材质“渲染模式”设置为“透明”时,效果完全可见:)

笔记:

  • 使用“透明”渲染模式将使对象在 Alpha 层降至 0 时变得透明,

  • 使用“淡入淡出”渲染模式将使对象在 Alpha 层降至 0 时变得完全不可见。

于 2017-05-12T22:43:22.857 回答