c# - 阵列随机颜色不生成

标签 c# unity3d

当我声明随机颜色数组时,我遇到了一个问题。它在游戏开始时在粒子系统中显示随机颜色,但每次游戏开始时它都显示白色。我不知道为什么会这样,我没有在数组中设置白色。

public class A : MonoBehaviour 
{       
   Color[] colors = {
   new Color (170, 7, 107),
   new Color (58, 96, 115),
   new Color(81, 99, 149),
   new Color(71, 118, 231)
};

void start()
{
   GetComponent<ParticleSystem>().startColor =  colors[Random.Range(0, colors.Length)];
}

最佳答案

在 Unity 中,颜色的 ARGB 分量范围在 0.0 到 1.0 之间。因此任何大于 1 的值都将被视为 1,因此所有颜色自然都是白色。

要转换颜色,请将每个分量除以 255。您可以自己执行此操作,也可以将其留给代码本身。另外,不要忘记转换为 float 。感谢 @Masih Akbari 提醒我这一点。

所以,它应该是:

Color[] colors = {
    new Color (170f/255, 7f/255, 107f/255),
    new Color (58f/255, 96f/255, 115f/255),
    new Color(81f/255, 99f/255, 149f/255),
    new Color(71f/255, 118f/255, 231f/255)
}

关于c# - 阵列随机颜色不生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34015860/

相关文章:

c# - 是否可以根据条件设置临界区?

c# - 在客户端加密 ASP.NET 文本字段并在服务器端解密

unity3d - 弹道/飞行路径

c# - 使用新的 RazorEngine API 进行模板化

c# - 屏幕抓取 : unable to authenticate into a site utilizing ASP . NET Forms 身份验证

c# - 连接到 PostgreSQL

android - Facebook正在寻找什么文件

c# - 在启动画面期间加载所有场景

c# - 如何让游戏玩法忽略 Unity3D 中 UI 按钮的点击?

c# - 如何使用曲线平滑地制作跳跃动画?