05.05.2024 10:34:45
Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 7,142
· Новый пользователь: Sarahseato
Последние фото
Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Блоги
general
» Unity3D – Chunky ...
general
» Unity3D: Simple p...
dampirik
» Записки программи...
dampirik
» Локализация прило...
dampirik
» Эффективность рас...
general
» HLSL: Шейдер воды
general
» Unity 3D: Управле...
general
» Unity 3D: FPS scr...
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
XNA и StartCoroutine
Просмотров: 1943 - Заполнять: Chort - 11.03.2013 14:42:18
 
Работая с Unity3D часто приходится пользоваться такой замечательной фишкой как StartCoroutine. Говоря простыми словами - можно вызвать метод который как бы будет исполняться одновременно со работой игры не останавливая ее. Такой себе псевдо-поток. Разъяснение так себе, лучше покажу как такое сделать и как таким пользоваться.

Первое что сделаем - простенький менеджер.
GeSHi: C#
  1. public class CoroutinesManager
  2. {
  3. private readonly List<IEnumerator> _coroutines = new List<IEnumerator> ();
  4.  
  5. public void Start(IEnumerator enumerator)
  6. {
  7. _coroutines.Add (enumerator);
  8. }
  9.  
  10. public void Update()
  11. {
  12. for (int i = _coroutines.Count - 1; i >= 0; i--)
  13. {
  14. IEnumerator enumerator = _coroutines[i];
  15.  
  16. if(!enumerator.MoveNext())
  17. _coroutines.RemoveAt(i);
  18. }
  19. }
  20. }
  21.  
  22. class Game1 : Game
  23. {
  24. ...
  25. CoroutinesManager _coroutinesManager = new CoroutinesManager();
  26.  
  27. ...
  28. protected override void Update (GameTime gameTime)
  29. {
  30. ...
  31. coroutinesManager .Update();
  32. }
  33. }
  34.  
Добавлено за 0.014 секунд, используя GeSHi 1.0.8.2


Дальше простенькие примеры использования:

Пример №1: Меняем цвет по нажатии на клавишу

GeSHi: C#
  1.  
  2. private IEnumerator CoroutineTest(GameTime gameTime)
  3. {
  4. float time = 0;
  5.  
  6. while (time < 10)
  7. {
  8. time += (float)gameTime.ElapsedGameTime.TotalSeconds;
  9.  
  10. _color = Color.Lerp(Color.CornflowerBlue, Color.Green, time / 10);
  11.  
  12. yield return null;
  13. }
  14. }
  15.  
  16. protected override void Update (GameTime gameTime)
  17. {
  18. ...
  19. if (Keyboard.GetState ().IsKeyDown (Keys.R))
  20. manager.Start (CoroutineTest(gameTime));
  21. ...
  22. }
  23.  
Добавлено за 0.013 секунд, используя GeSHi 1.0.8.2


Пример №2: Запускаем анимацию смерти персонажа и только потом удаляем его.
GeSHi: C#
  1. private IEnumerator CoroutineTest2(Unit unit, AnimationSet dieAnimation)
  2. {
  3. unit.StartAnimation (dieAnimation);
  4.  
  5. while (!unit.Animation.IsFinished)
  6. {
  7. yield return null;
  8. }
  9.  
  10. _units.Remove (unit);
  11. }
Добавлено за 0.008 секунд, используя GeSHi 1.0.8.2


Как видите, все методы основываются на инструкции yield return, и после каждого ее вызова мы возвращаемся в метод Update, и продолжаем работу на следующий вызов метод Update.

В общем, пользуйтесь на здоровье Smile
Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.

© 2007 - 2008 by Elactos
Авторизация
Логин

Пароль



Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

11.12.2023

11.12.2023
[img]https://x.pin
-up-world.com/imag
es/img4.jpg[/img]
[url=https://ofoi.
cenditt.loan/new-k
atiana-kay-fucking
-with-lucky-fan-p1
-porn-scenes/]133K
67% New Katiana

11.12.2023
[img]https://wwt.s
sgameadmin2.com/im
ages/img4.jpg[/img
]
[url=https://k.smi
letaxservice.com/r
edirect/SFpEdDR1cG
V4czNKMmxlQi9tVytI
d3dxWW9GWTd5Zk52TD
VVMG1mc3YvUmlDMWUw

11.12.2023

11.12.2023

10.12.2023
[img]https://ey.os
prey-holidays.uk/i
mages/img10.jpg[/i
mg]
[url=https://nby.h
ighlyresponsible.c
om/696488/sexyfeet
girl2020-gotta-kee
p-them-soft-lookin
g-

30.11.2023
[img]https://nuggi
e.army/images/img1
5.jpg[/img]
German Porno kostenlos - Deutsche Pornos &amp; Pornofilme. [url=ht

30.11.2023

30.11.2023
[img]https://where
ijoin.com/images/i
mg8.jpg[/img]
Voir Films VF VOSTFR - . [url=http://mvig.j
ulieemontelaro.com
/]omegleX

30.11.2023
[img]https://steam
unlocked.tangobliv
ion.com/images/img
14.jpg[/img]
Top - Rated Live Sex Cam Videos to Watch Online. [

29.11.2023

29.11.2023
[img]https://chaii
t.com/images/img8.
jpg[/img]
Ottmaza.live - Ottmaza.Com Official Website | Ottmaza | Ottmaza.Net | Ottmaz

29.11.2023
[img]https://ezyja
mb.co.uk/images/im
g10.jpg[/img]
Free Porn - Sex, Tube Videos, XXX Pics, Pussy in Porno

29.11.2023
[img]https://launc
hbusinessloans.org
/images/img15.jpg[
/img]
Asyalı - Koreli Japon Seks Filmleri Türkçe A

29.11.2023
[img]https://panen
poker.org/images/i
mg8.jpg[/img]
[url=http://watchm
ovies.seoullittlem
all.com/]Junkie Musik Lossless &#ff7dee MГєsica ElectrГіnica p

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,31 секунд 13,296,723 уникальных посетителей