Странное зависание.

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

Странное зависание.

Сообщение Kp0c 29 сен 2012, 18:58

Обязательная заметка: Если все что будет описано далее делать в самом движке бага не будет, но если это скомпилировать он появится и очень бесить.
При переходе с меню в уровень с прогресом загрузки игра зависает примерно на:
1)Win 7: 10-20 sec.
2)Win XP: 3-4 МИНУТЫ.
На том уровне всего 36 Draw Calls и примерно 100-600 ФПС.
На семерке то результат приемлимый, но на XP надо снизить время :(
Почему происходит это зависание и как его устранить? Пробовал поставить на асинхронную, быстренько отвисло но не загрузилось (в логе пишет что async.!isDone).
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

Re: Странное зависание.

Сообщение trololoid 29 сен 2012, 20:11

Прям так и пишет?
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия

Re: Странное зависание.

Сообщение Kp0c 29 сен 2012, 21:34

Прям так и пишет?

У меня в Debug.log такое закодировано.

Если к завтрашнему дню, не будет кода которым загружается уровень и лога, тема будет снесена.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class MainMenu : MonoBehaviour {
       
        private int Level;
        private AsyncOperation async;
       
         IEnumerator LoadNewLevel()
           {
                  async = Application.LoadLevelAsync("Downolader");
                  while(!async.isDone)
                   {
                                                  Debug.Log ("No is done");
                          yield return null;
             }
            }
       
        void StartGame(){
                PlayerPrefs.SetInt("DownloadLevel",1);
                StartCoroutine(LoadNewLevel());
                                 }
       
        //Покадровая прорисовка ГУИ
        void OnGUI(){
                //тут ГУИ меню + StartGame (); при нажатии кнопки "Новая игра"      
                           }
}
 
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

Re: Странное зависание.

Сообщение waruiyume 29 сен 2012, 21:50

Асинхронная загрузка, работает как и ожидалось. Возможно лаг происходит при запуске, а не загрузке (жирные меши, большое количество коллайдеров или объектов. Инстанцирование объектов и регистрация коллайдеров, не входит в процесс загрузки (вроде бы)).
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Странное зависание.

Сообщение Kp0c 29 сен 2012, 23:11

Там сцена с 1 мешем, маленьким озером, bloom + flare, мелкий Plane, статическая камера и 4 скелета с анимацией и звуком.
Вот полные данные, как исправить эту проблему?

Добавлено 3 минуты спустя:
Забыл сказать, если использовать асинхронную загрузку то подвис происходит на 5-10 сек( и на ХР ) а потом меню дальше функционирует, то-есть можно нажать выход, опять "Новая игра" и т.д.
А также почему это происходит только при использовании ХР?
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

Re: Странное зависание.

Сообщение Kp0c 30 сен 2012, 18:33

Так что никто не знает как исправить?
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

Re: Странное зависание.

Сообщение mrcoder 30 сен 2012, 22:59

waruiyume вам правильно ответил - сцена может быть и простой на глаз а на деле содержать туеву кучу например детализированных коллайдеров. из за чего и происходит торможение.

Kp0c писал(а):А также почему это происходит только при использовании ХР?


это вам лучше знать. может хп у вас стоит на другом компе с другой видеокартой или в ней не установлен или стоит старый физХ/дотнет и т.д и т.п...
может в одном случае у вас nvidia в другом ati. у нвидиа физика аппаратная, у ати нет и вот и возникает такой коллапс из за допустим огромного количества коллайдеров которые грузятся.
вариантов море....
Аватара пользователя
mrcoder
Старожил
 
Сообщения: 704
Зарегистрирован: 28 июн 2012, 22:40

Re: Странное зависание.

Сообщение alexmarch 30 сен 2012, 23:17

Дай EXE затестю. Есть 7-ка и есть ХР обе 64 бит, а ты тестил на 32 битах? ;)
Аватара пользователя
alexmarch
UNITрон
 
Сообщения: 286
Зарегистрирован: 04 май 2009, 19:54

Re: Странное зависание.

Сообщение alexmarch 03 окт 2012, 00:30

На win7 x64 зависонов нет i5core 2400, 8 ram,AMD Radeon HD 7800 Series
Но если зайти в игру побегать, потом опять выйти в главное меню и потом опять в игру зайти, тогда идет зависание. Музыка играет а скелеты стоят.
Аватара пользователя
alexmarch
UNITрон
 
Сообщения: 286
Зарегистрирован: 04 май 2009, 19:54

Re: Странное зависание.

Сообщение Kp0c 03 окт 2012, 07:26

Вот в этом и состоит все зависание, а у меня на компе даже первый раз не грузится :(
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

Re: Странное зависание.

Сообщение Sality 03 окт 2012, 11:00

У вас в скриптах есть GameObject.Find() -ы ? Возможно один обьект загружается раньше другого, и в скриптах этого обьекта присходят вызовы еще не существующих компонентов или обьектов. Во всяком случае эта теория обьясняет почему на более мощьной машине (ведь семерка мощьнее хрюши) все обьекты успевают грузанутся, а на более медленной не все, и ловится лаг.

Еще уберите while() в курутине, или поставте ей задержку хотя бы 0,1с, может я и подзабыл, но мне кажется в таком виде она будет наматывать круги, недавая потоку сделать свои дела.
Аватара пользователя
Sality
Старожил
 
Сообщения: 771
Зарегистрирован: 26 ноя 2011, 15:31
Откуда: Украина

Re: Странное зависание.

Сообщение waruiyume 03 окт 2012, 11:32

Попробуйте прицепить профайлер.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Странное зависание.

Сообщение Kp0c 03 окт 2012, 19:04

У вас в скриптах есть GameObject.Find() -ы ? Возможно один обьект загружается раньше другого, и в скриптах этого обьекта присходят вызовы еще не существующих компонентов или обьектов. Во всяком случае эта теория обьясняет почему на более мощьной машине (ведь семерка мощьнее хрюши) все обьекты успевают грузанутся, а на более медленной не все, и ловится лаг.


Нет, но у меня сразу при старте той сцены (переход на какую лагает) включается музыка и стартует переход на реально сложную сцену.

Еще уберите while() в курутине, или поставте ей задержку хотя бы 0,1с, может я и подзабыл, но мне кажется в таком виде она будет наматывать круги, недавая потоку сделать свои дела.


Убрал, но все равно он не виноват :(

Попробуйте прицепить профайлер.


Что это такое? 8()
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

Re: Странное зависание.

Сообщение Sality 03 окт 2012, 21:39

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

Попробуйте убрать вобще курутину, а загрузку уровня положить в старт.
Еще в новой сцене поймайте событие OnLevelWasLoaded и запишите время.

Просматриваем лог и сверяем правильно ли загружаются обьекты, и все ли загружаются. Может увидите дубляж данных, что свидетельствует о повторных вызовах одинаковых методов.
Аватара пользователя
Sality
Старожил
 
Сообщения: 771
Зарегистрирован: 26 ноя 2011, 15:31
Откуда: Украина

Re: Странное зависание.

Сообщение Kp0c 03 окт 2012, 21:59

Вот я сегодня тоже думал над проблемой и хотел спросить, что-бы не делать лишней работы, будет ли перенос того уровня(он очень мелкий) в уровень с меню решением? А там чисто переместить камеру. Походу компу меньше думать надо будет.
Kp0c
UNец
 
Сообщения: 32
Зарегистрирован: 21 мар 2012, 22:00

След.

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

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

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