Проблемы с System.*****

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Проблемы с System.*****

Сообщение Receptor 13 май 2012, 16:57

Искал альтернативный вариант yield WaitForSeconds по гуглам (не смог толком разобраться с IEnumerator), что бы можно было юзать в Update() или FixedUpdate(). Нашел небольшой метод, практически не менял его:
Синтаксис:
Используется csharp
public static void MyDelay(int seconds){
               
                System.TimeSpan ts = System.DateTime.Now + System.TimeSpan.FromSeconds(seconds);
                do {} while (System.DateTime.Now < ts);
               
                }
 


Компилятор ругается Cannot implicitly convert type "System.DateTime" to "System.TimeSpan". Как мне типы эти переконвертировать-то?:) Или что-то не так делаю совсем? Спасибо.
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Проблемы с System.*****

Сообщение Receptor 13 май 2012, 17:22

в общем, если тип переменной поменять на DateTime, то работает.
Синтаксис:
Используется csharp
public static void MyDelay(int seconds){
               
                System.DateTime dt = System.DateTime.Now + System.TimeSpan.FromSeconds(seconds);
                do { } while (System.DateTime.Now < dt);
}
 


Правда жаль что это нито, что мне нужно. Все подвисает на заданное вол-во времени, а нужно просто что бы следующая строчка в коде читалась не сразу, а через время... :-\
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Проблемы с System.*****

Сообщение seaman 13 май 2012, 17:35

Чтобы имитировать корутины нужны не DateTime, а потоки. Не проще ли разобраться с корутинами?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Проблемы с System.*****

Сообщение Receptor 13 май 2012, 20:00

В моем положении все же проще. Полез вообще куда-то :)) Я нашел топик на форуме viewtopic.php?f=105&t=6701&p=53566

По Вашему примеру пробовал сделать у себя, не получается. :-?? Компиль не ругается, но звук продолжает играть со скоростью Update().

Синтаксис:
Используется csharp

public bool waitDelayBool;
       
        void TestFunction(){
                if(Input.anyKey){
                audio.clip = attackChangeSoundList[1];
                waitDelayBool = true;
                StartCoroutine(WaitDelay(2));
                waitDelayBool = false;
                audio.Play();
                }
        }
       
        IEnumerator WaitDelay(int seconds){
                                yield return new WaitForSeconds(seconds);
        }
       
        void Update (){
               
                if (waitDelayBool) return;
                        TestFunction();
        }
 
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Проблемы с System.*****

Сообщение seaman 13 май 2012, 20:43

Синтаксис:
Используется csharp
public bool waitDelayBool;
     
IEnumerator WaitDelay(int seconds)
{
     audio.clip = attackChangeSoundList[1];
     waitDelayBool = true;
     yield return new WaitForSeconds(seconds);
     audio.Play();
     waitDelayBool = false;
}
void Update ()
{
    if (waitDelayBool || !Input.anyKey) return;
    StartCoroutine(WaitDelay(2));
}
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Проблемы с System.*****

Сообщение Receptor 15 май 2012, 04:31

Спасибо :)
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21