Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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# 在Unity中生成随机颜色不是';t工作不正常_C#_Unity3d_Game Development - Fatal编程技术网

C# 在Unity中生成随机颜色不是';t工作不正常

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

所以我想我有一个很奇怪的虫子。。我有一个脚本,我在其中生成一个随机颜色并将其分配给玩家,问题是颜色始终是白色的,但当我在inspector中查看颜色面板时,它显示的是正常的随机颜色。另一个有趣的事情是,当我在游戏模式下在inspector中更改颜色时,它实际上会更改

    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变量使其随机,我意识到另一件事,只有黄色可见,有什么想法吗?