Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一颜色切换(带脚本)_C#_Unity3d - Fatal编程技术网

C# 统一颜色切换(带脚本)

C# 统一颜色切换(带脚本),c#,unity3d,C#,Unity3d,我想增加一个物体每次命中的阿尔法通道。但是我不能使用Alpha变量,因为它是一个整数,color32需要字节值。我知道color,它是float,但它对我不起作用,我需要color32。我该怎么做 void OnCollisionEnter2D (Collision2D col) { Alpha += 255 / maxHits; currentHit++; gameObject.GetComponent<SpriteRenderer>

我想增加一个物体每次命中的阿尔法通道。但是我不能使用Alpha变量,因为它是一个
整数
color32
需要字节值。我知道
color
,它是float,但它对我不起作用,我需要
color32
。我该怎么做

void OnCollisionEnter2D (Collision2D col) {

        Alpha += 255 / maxHits;
        currentHit++;
        gameObject.GetComponent<SpriteRenderer> ().color = new Color32(159,86,86,Alpha);
        if (currentHit == maxHits) {
            Destroy (gameObject);
        }
}
无效OnCollisionInter2D(Collision2D列){
Alpha+=255/最大点击数;
currentHit++;
gameObject.GetComponent().color=newcolor32(159,86,86,Alpha);
如果(currentHit==maxHits){
摧毁(游戏对象);
}
}

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


当您可以确保
Alpha
变量具有介于0和255之间的有意义的值时,只需在变量前面加上
(byte)
,将其转换为一个字节,或者直接将
Alpha
声明为
byte
类型。就是这样。

确保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);
        }
}
float Alpha=0;
空心OnCollisionInter2D(碰撞2D列){
α+=1f/最大点击数;
currentHit++;
gameObject.GetComponent().color=新颜色(159f/255,86f/255,86f/255,Alpha);
如果(currentHit==maxHits){
摧毁(游戏对象);
}
}

那么为什么将
Alpha
声明为
int
而不是
byte