2015-12-01 2 views
1

У меня возникла проблема, когда я объявляю массив случайных цветов. Он показывает случайные цвета в системе частиц при старте игры, но каждый раз, когда игра начинается, она показывает белый цвет. Я не знаю, почему это происходит, я не выбрал белый в своем массиве.Array случайный цвет не генерируется

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)]; 
} 

ответ

3

В 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) 
} 
+0

Черт, вы получили там передо мной! : p –

+0

Да, всего несколько секунд. –

+2

Единство просто погрузилось в это как поплавок? я чувствую, что вы должны были погрузиться в это так: '170f/255' –

1

Причина этого заключается в том, что цвета нормированы в Unity. Вы должны разделить каждый поплавок, который вы установили на 255, чтобы получить фактическое значение, например.

Color[] colors = { 

    new Color (170/255, 7/255, 107/255), 
    new Color (58/255, 96/255, 115/255), 
    new Color(81/255, 99/255, 149/255), 
    new Color(71/255, 118/255, 231/255) 
}; 
+1

'170/255 'is ...' 0' (целочисленное деление), поэтому у вас будет 'новый цвет (0, 0, 0)' на самом деле ('Black') –

+0

@DmitryBychenko Как исправить то, что означает 255, является магией значение –

+0

@Tim Allen: '170f/255' или' 170/255f' или '(float) (170.0/255.0)' и т. д. –

0

Ваши значения цвета должны быть между 0 и 1. все после 1 считается белым.

Не забудьте отдать свой номер как поплавок

Смежные вопросы