Открытая переменная работает в Inspector, но не отображается в окнах Scene или Game - PullRequest
0 голосов
/ 13 февраля 2019

В моей игре есть один скрипт обратного отсчета.Как только таймер (3 секунды) достигает нуля, начинается игровой процесс.
Я хотел сделать так, чтобы текст менял цвет во время обратного отсчета (то есть 3 - красный, 2 - желтый, 1 - зеленый).

Этого было довольно легко достичь, но я не был полностью доволен использованием countdown.color = Color.green; и хотел большей гибкости (то есть наличия палитры цветов в редакторе).

Этот код работает:

Text countdown;

void OnEnable()
{
    countdown = GetComponent<Text>();
    countdown.text = "3";
    StartCoroutine("Countdown");
}

IEnumerator Countdown()
{
    int count = 3;

    for (int i = 0; i < count; i++)
    {
        countdown.text = (count - i).ToString();
        if ((count - i) == 3)
        {
            countdown.color = Color.red;
        }
        if ((count - i) == 2)
        {
            countdown.color = Color.yellow;
        }
        if ((count - i) == 1)
        {
            countdown.color = Color.green;
        }
        yield return new WaitForSeconds(1);            
    }
    StartRound();        
}        

И это то, что вызывает у меня головную боль:

public Color color3;
public Color color2;
public Color color1;

Text countdown;

void OnEnable()
{
    countdown = GetComponent<Text>();
    countdown.text = "3";
    StartCoroutine("Countdown");
}

IEnumerator Countdown()
{
    int count = 3;

    for (int i = 0; i < count; i++)
    {
        countdown.text = (count - i).ToString();
        yield return new WaitForSeconds(1);

        if ((count - i) == 3)
        {
            countdown.color = color3;                
        }

        if ((count - i) == 2)
        {
            countdown.color = color2;                
        }

        if ((count - i) == 1)
        {
            countdown.color = color1;                
        }        
    }
    StartRound();        
}        

Второй сценарий работает, но только до определенного момента:
- 3 цвета отображаются в Инспектореи я могу открыть палитру цветов и выбрать желаемые цвета;
- после нажатия кнопки «Пуск» текст вообще не отображается (обратный отсчет все еще работает, и геймплей начинается нормально после этих 3 секунд), как будтоальфа установлен на 0;
- во время обратного отсчета я вижу, как палитра цветов по умолчанию (тот, что находится в компоненте Text (Script)) циклически перебирает мои 3 цвета в Инспекторе, но я ничего не получаю в своей сцене илиПросмотр игры.

Любая помощь будет принята с благодарностью.Заранее спасибо.

1 Ответ

0 голосов
/ 13 февраля 2019

текст вообще не отображается ... как будто альфа установлена ​​на 0

Ваша альфа, скорее всего, установлена ​​на 0;Ваш код выглядит нормально, и если первый скрипт работает, то замена его вторым скриптом должна работать с правильно настроенными цветами (отсюда моё предположение).Если вы посмотрите на этот снимок экрана палитры цветов, вы заметите, что цвет отображается в инспекторе и в цветовом круге, но значение A (ниже R, G и B) равно 0.

Color Picker in Inspector with 0 alpha but color still shows

Вы должны вручную установить максимальное значение (или любое другое значение, отличное от 0), которое будет отображаться в инспекторе белой полосой заполнения.вверху под изображением цвета.Обратите внимание, что на следующем снимке экрана я установил его примерно на половину, поэтому под цветом в инспекторе есть половина белой полосы:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...