C# 在Unity中生成随机颜色不是';t工作不正常
所以我想我有一个很奇怪的虫子。。我有一个脚本,我在其中生成一个随机颜色并将其分配给玩家,问题是颜色始终是白色的,但当我在inspector中查看颜色面板时,它显示的是正常的随机颜色。另一个有趣的事情是,当我在游戏模式下在inspector中更改颜色时,它实际上会更改C# 在Unity中生成随机颜色不是';t工作不正常,c#,unity3d,game-development,C#,Unity3d,Game Development,所以我想我有一个很奇怪的虫子。。我有一个脚本,我在其中生成一个随机颜色并将其分配给玩家,问题是颜色始终是白色的,但当我在inspector中查看颜色面板时,它显示的是正常的随机颜色。另一个有趣的事情是,当我在游戏模式下在inspector中更改颜色时,它实际上会更改 float R = Random.Range(0, 226); float G = Random.Range(0, 226); float B = Random.Range(0, 226); Colo
float R = Random.Range(0, 226);
float G = Random.Range(0, 226);
float B = Random.Range(0, 226);
ColorToBeGenerate = new Color(R, G, B);
Player.GetComponent<SpriteRenderer>().color = ColorToBeGenerate;
float R=Random.Range(0226);
浮点G=随机范围(0226);
浮动B=随机范围(0226);
ColorToBeGenerate=新颜色(R、G、B);
Player.GetComponent().color=ColorToBeGenerate;
我不久前也有类似的错误。
使用Color32
而不是Color
为我修复了它。编辑:
Color
构造函数接受0到1之间的浮点值。。不在0到255之间的整数。如所述
按如下所示更改代码
float R = Random.Range(0, 226/255f);
float G = Random.Range(0, 226/255f);
float B = Random.Range(0, 226/255f);
ColorToBeGenerate = new Color(R, G, B);
Player.GetComponent<SpriteRenderer>().color = ColorToBeGenerate;
float R=随机范围(0226/255f);
浮动G=随机范围(0226/255f);
浮动B=随机范围(0226/255f);
ColorToBeGenerate=新颜色(R、G、B);
Player.GetComponent().color=ColorToBeGenerate;
实际原因是:构造函数从0
到1
取浮点值。。不在0到255之间的整数。因此,介于0
和225
之间的随机值(226是独占的)将被钳制为1
,因此最有可能(有225比1的可能性)的结果始终是1
,或者在另一种情况下是0
颜色总是会变成白色
因此,是的,您必须将其更改为介于0
和1
之间的值,如
或者与介于0
和255
之间的int值一起使用,如
int R = Random.Range(0, 227);
int G = Random.Range(0, 227);
int B = Random.Range(0, 227);
ColorToBeGenerate = new Color32(R, G, B, 255);
Player.GetComponent<SpriteRenderer>().color = ColorToBeGenerate;
intr=Random.Range(0227);
INTG=随机范围(0227);
intb=随机范围(0227);
ColorToBeGenerate=新的颜色32(R、G、B、255);
Player.GetComponent().color=ColorToBeGenerate;
Color32
可以隐式转换为Color
,反之亦然。它工作了,但我不能插入int或float变量使其随机,我意识到另一件事,只有黄色可见,有什么想法吗?