Unity中的颜色切换(带脚本)

时间:2017-09-08 18:24:15

标签: c# unity3d

我希望在对象每次点击时增加Alpha通道。但我不能使用我的Alpha变量,因为integercolor32需要字节值。我知道color,它是浮动的,但它对我不起作用,我需要color32。我怎样才能做到这一点?

void OnCollisionEnter2D (Collision2D col) {

        Alpha += 255 / maxHits;
        currentHit++;
        gameObject.GetComponent<SpriteRenderer> ().color = new Color32(159,86,86,Alpha);
        if (currentHit == maxHits) {
            Destroy (gameObject);
        }
}

2 个答案:

答案 0 :(得分:1)

确保Alpha是浮点数。试试这个:

float Alpha = 0;

void OnCollisionEnter2D (Collision2D col) {

        Alpha += 1f / maxHits;
        currentHit++;
        gameObject.GetComponent<SpriteRenderer> ().color = new Color(159f/255,86f/255,86f/255,Alpha);
        if (currentHit == maxHits) {
            Destroy (gameObject);
        }
}

答案 1 :(得分:0)

非常有意义的是,你只能插入一个byte的alpha值,即0到255之间。这是因为使用的颜色系统(24位RGBA)每个颜色通道恰好有8位/ 1字节。尝试插入高于255或低于0的值是没有意义的。

如果您可以确保Alpha变量的有意义值介于0到255之间,只需将(byte)放在前面,或直接声明Alpha即可将其强制转换为字节。属于byte类型。就是这样。