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