Как определить, что совместная рутина уже сыграна? - PullRequest
0 голосов
/ 03 апреля 2019

Я хотел бы сыграть одну сопрограмму, если альфа на объекте черная, и другую сопрограмму, если альфа белая. Это будет вызвано из общественной пустоты.

Так что, в основном, у меня есть объект, который при нажатии на что-то затухает. Теперь при нажатии на другой объект я бы хотел, чтобы этот объект исчез, но только если он уже исчезает.

 public void fade()

{
    if objectname.material.color = (1f, 1f, 1f, 0f);

    StartCoroutine(OPTION1());


    if objectname.material.color = (1f, 1f, 1f, 1f);

    StartCoroutine(OPTION2());

}

1 Ответ

1 голос
/ 03 апреля 2019

Поскольку каждый объект уникален (не является статическим и совместно используемым для каждого экземпляра), вы, вероятно, могли бы добавить свойство, чтобы предотвратить любой тип рекурсивного или повторного вызова ... установить внутренний флаг и очистить, когда все будет выполнено ... Что-то вроде

private bool _isFading;

public void fade()
{
    // Is the fading already doing its thing?  If so, get out
    if( _isFading )
       return;
    // nope, not yet, first time in, set flag to prevent subsequent calls
    // against this same object
    _isFading = true;

    if objectname.material.color = (1f, 1f, 1f, 0f);
       StartCoroutine(OPTION1());

    if objectname.material.color = (1f, 1f, 1f, 1f);
       StartCoroutine(OPTION2());

    // reset now that the fading is complete
    _isFading = false;
}
...