Как выполнить код на момент закрытия Веб Плеера?

Общие вопросы о Unity3D

Как выполнить код на момент закрытия Веб Плеера?

Сообщение qmaks 02 фев 2011, 20:12

Если закрыть веб плеер, можно ли каким-то образом успеть выполнить сохранение? Что бы вкладка не закрывалась пока не выполнится моя функция сохранения.
Вопрос именно для веб плеера. Сохранение большое довольно по времени. На удаленный сервер сохраняется
qmaks
UNIт
 
Сообщения: 57
Зарегистрирован: 03 окт 2010, 23:07

Re: Как выполнить код на момент закрытия Веб Плеера?

Сообщение Neodrop 02 фев 2011, 20:44

В любом из работающих скриптов, при закрытии плеера, будет вызван метод OnDisable()
Можно из страницы вызвать через Message
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Как выполнить код на момент закрытия Веб Плеера?

Сообщение Paul Siberdt 02 фев 2011, 20:48

А не лучше ли делать сохранение по чек-пойнтам или при старте уровня?
Сохранение при выходе может оказаться неожиданно неудобным при возвращении в игру :)

У меня сейв происходит при смене уровня (на выходе с указанием следующей точки входа).
Если выключить/закрыть приложение в любом месте, с запуском будет доступна загрузка как раз со следующего уровня. Полупрохождение конкретного уровня не считается, что считаю логичным. :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Как выполнить код на момент закрытия Веб Плеера?

Сообщение Zaicheg 02 фев 2011, 21:38

qmaks писал(а):Если закрыть веб плеер, можно ли каким-то образом успеть выполнить сохранение? Что бы вкладка не закрывалась пока не выполнится моя функция сохранения.
Вопрос именно для веб плеера. Сохранение большое довольно по времени. На удаленный сервер сохраняется

Мне кажется, что никак. Вам ведь по сути требуется запретить пользователю браузера закрыть неугодную ему страницу или объект на ней, что как бы нарушает всякие его права и понятия о безопасности.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Как выполнить код на момент закрытия Веб Плеера?

Сообщение zoon 04 фев 2011, 09:05

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

Простой тест показывает что 10-20-30 (и по видимому любой разумный временной интервал) секунд - OK.
Синтаксис:
Используется csharp
private void OnApplicationQuit()
    {
        Debug.LogWarning("[Tra-ta-ta]");
        Thread.Sleep(10000);
        Debug.LogWarning("[After 10 sec sleep]");
        Thread.Sleep(20000);
        Debug.LogWarning("[After 20 sec sleep]");
        Thread.Sleep(30000);
        Debug.LogWarning("[After 30 sec sleep]");
    }
 


Смотрим в лог:
Синтаксис:
Используется javascript
110204 08:59:36 Closing plugin window
web: shutdown player
[Tra-ta-ta]
UnityEngine.Debug:Internal_Log(Int32, String, Object)
UnityEngine.Debug:LogWarning(Object)
G:OnApplicationQuit()
 
(Filename: ..\..\Runtime\Export\Generated\BaseClass.cpp Line: 2528)

[After 10 sec sleep]
UnityEngine.Debug:Internal_Log(Int32, String, Object)
UnityEngine.Debug:LogWarning(Object)
G:OnApplicationQuit()
 
(Filename: ..\..\Runtime\Export\Generated\BaseClass.cpp Line: 2528)

[After 20 sec sleep]
UnityEngine.Debug:Internal_Log(Int32, String, Object)
UnityEngine.Debug:LogWarning(Object)
G:OnApplicationQuit()
 
(Filename: ..\..\Runtime\Export\Generated\BaseClass.cpp Line: 2528)
...
 
Джаггер
Evo
Аватара пользователя
zoon
UNIт
 
Сообщения: 58
Зарегистрирован: 24 май 2010, 08:27


Вернуться в Общие вопросы

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

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