Coroutine на Android & IOS

Программирование для iPhone & Android

Coroutine на Android & IOS

Сообщение Kabanelloo 01 июл 2019, 12:00

Доброго времени суток!! Написал ИИ босса, весь функционал зашит на Coroutine , самые банальные поведения переключаются именно таким путем.
Есть гуру по использованию Coroutine в мобильных устройствах, можно ли на них положиться ?

Для примера вот такое поведение атаки босса:

В итоге каждый Coroutine имеет свою свою роль, но в процессе работает только несколько Coroutine.
Код выглядит как класс помойка, в нем описаны все свойства босса и все его поведения.
Этим кодом я показываю как я много их использую, стал переживать за производительность и синхронизацию с устройством.

Синтаксис:
Используется csharp
    private IEnumerator BehaviorAttack()
    {
        StartCoroutine(BackToPosition()); // в момент атаки возвращаться на исходное положение.
        while (bullets > 0)
        {
            switch (Random.Range(1, 4)) // хаотично двигается между путями.
            {
                case 1:
                    MoveSide(Track.Right);
                    break;
                case 2:
                    MoveSide(Track.Left);
                    break;
                case 3:
                    MoveSide(Track.Center);
                    break;
            }

            switch (Random.Range(1, 3)) // Атакует двумя способами.
            {
                case 1: AttackBomb();
                    break;
                case 2:
                    yield return StartCoroutine(DetectRoadBeforPlayer()); // ожидание в поиске доступной разрушаемой дороги, атакой дороги, чтобы персонаж провалился..
                        AttackLaser();
                    break;
            }
            bullets--;
            GameInterface.Instance.BossAmmo(1f / startBullets); // уменьшение оружия интерфейс.
            yield return new WaitForSeconds(Random.Range(0.2f, 0.6f)); // задержка между выстрелами.
        }
        MoveSide(Track.Center); // Центр трека, отчет новых действий.
        while (positionRecovery) // Ожидание восстановления позиции для следующих проведений.
        {
            yield return null;
        }
    }
 


А также есть Coroutine типа переключатели:

Синтаксис:
Используется csharp
    private IEnumerator BehaviorOne()
    {
        track = Random.Range(1, 3) == 1? Track.Right : Track.Left; // случайны путь

        yield return StartCoroutine(ManeuverLeftRight(track)); // ожидание маневра
        yield return StartCoroutine(ManeuverUpDown(Track.Up)); // ожидание пробитие трека сверху вниз.

        switch (Random.Range(1, 3)) // переключение на случайные поведения..
        {
            case 1: StartCoroutine(BehaviorTwo());
                break;
            case 2:
                StartCoroutine(BehaviorThree());
                break;
        }
       
    }
 
Kabanelloo
UNITрон
 
Сообщения: 163
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea

Re: Coroutine на Android & IOS

Сообщение ~AvA~ 01 июл 2019, 12:06

Ну, на счёт мнения гур не знаю, но как-то не сталкивался с проблемами с корутинами на мобилках)
Если есть такие - свистите сейчас или молчите всегда ))
Аватара пользователя
~AvA~
UNIверсал
 
Сообщения: 396
Зарегистрирован: 17 фев 2015, 13:09

Re: Coroutine на Android & IOS

Сообщение Kabanelloo 01 июл 2019, 12:16

~AvA~ писал(а):как-то не сталкивался с проблемами с корутинами на мобилках


Как то раз грешил на Карутины, оказалось, что FPS был разный и логично расчеты функций были разными.. Time.deltaTime решил все)) Все вроде работает на Android, но иногда есть сомнения )))
Kabanelloo
UNITрон
 
Сообщения: 163
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea


Вернуться в iPhone & Android

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

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