Как переслать переменную на сайт сервера?

Программирование на Юнити.

Re: Как переслать переменную на сайт сервера?

Сообщение Sergasteam 30 мар 2012, 17:12

я думал вы знаете как,хотьбы подсказали.
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Как переслать переменную на сайт сервера?

Сообщение DbIMok 30 мар 2012, 17:24

как что именно? как получить размер файла локально, как получить размер файла удаленно, как загрузить, как заменить? подсказать можно что-то конкретное. например, когда пишут, вот тестовый проект, не получается вот это. тогда можно посмотреть, что-то исправить и тем самым помочь автору. вы пока не определились чего и как хотите, зачем мне писать что-то за вас, когда есть кучка готовых решений, чтобы сэкономить вам сотню баксов? предложить вам бесплатно готовое решение не зная даже ваших требований я не могу, увы.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как переслать переменную на сайт сервера?

Сообщение Sergasteam 30 мар 2012, 18:08

извиняюсь,я понял как обновляться,нужно следить за откомпиленными файлами sharedassets, которые находятся в папке с построенным проектом. Так вот, я думал вы знаете как можно в юнити в скрипте в строковую переменную прописать размер файла? который находится по определенному пути,путь я читаю из реестра винды,этот путь прописывается во время установки проекта. Мне нужно знать размер файла в байтах,так как сравнение байтов будет происходить по отсылке байтов на сервер, на сервере по заданному условию сравнения байтов например исполняемого файла на сервере с исполняемым файлом на клиенте будет издано решение,загрузить апдейт или нет.
Поэтому я спросил у вас могли бы вы помочь с определением размера файла?
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Как переслать переменную на сайт сервера?

Сообщение DbIMok 30 мар 2012, 18:24

Синтаксис:
Используется csharp
System.IO.FileInfo file = new System.IO.FileInfo(Application.dataPath + "/sharedassets0.assets");
Debug.Log(file.Length);

извините, но вы написали сумбурный бред, а не план к действию. с чего надо начать (для того чтобы всем было понятно) разрабатывается standalone приложение (с учетом того, что выше вы использовали в скриптах некоторые сугубо вебплеерные команды, это было не очевидно). после установки приложения на клиенте установщиком (каким чего как в этом месте непонятно) его нужно обновлять. с учетом того, что приложения обычно ставятся в програм файлс администратором, а запускаться они могут обычными пользователями, записи данных в папку установленного приложения обычно избегают, а пишут в папку данных пользователя, но это пока опустим. и так, приложение загружает первую сцену и запускает код. этот код должен сделать запрос на сервер и проверить строку с текущим билдом на нем (зачем суетиться если нужно всего лишь сравнить пару чисел?) далее, если версии отличаются, с сервера запрашивается табличка вида путь файла, md5 хэш (в том что размер разных файлов совпадет нет ничего невероятного). далее вычисляются хэши локальных файлов и сравниваются с полученными. отличающиеся файлы перекачиваются, приложение перезапускается. план реальный, за исключением пары моментов dll с кодом и первая сцена все это проделывающая будут заблокированы и их из них заменить не удастся.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как переслать переменную на сайт сервера?

Сообщение Sergasteam 30 мар 2012, 19:30

ну да,я это имел ввиду)) только щас стоит задача,могли бы подсказать еще:
вот я беру из реестра путь, куда установлено приложение, в юнити в переменной str имеется такая запись C:\Program Files\.... короче я не могу заменить эти \ слеши на вот эти / в юнити чтобы путь к файлу читался там куда установлено приложение.
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Как переслать переменную на сайт сервера?

Сообщение DbIMok 30 мар 2012, 19:52

не надо ничего заменять.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как переслать переменную на сайт сервера?

Сообщение Sergasteam 30 мар 2012, 20:06

но юнити орет что неверно задан параметр \s. т.е строка имеет вид c:\program files\wg\spr.exe
просто апдейтер создает именно такие слеши в реестре,а для вашего кода надо чтобы строка была такой Application.dataPath+"/filename.exe",т.е. соответственно фраза Application.dataPath для юнити имеет / слеши.
Последний раз редактировалось Sergasteam 30 мар 2012, 20:16, всего редактировалось 1 раз.
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Как переслать переменную на сайт сервера?

Сообщение DbIMok 30 мар 2012, 20:15

в таких случаях принято приводить код и строку ошибки полностью.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как переслать переменную на сайт сервера?

Сообщение Sergasteam 30 мар 2012, 20:24

а,все,все нормально,просто в конец файла забыл приписать расширение,спасибо.
Ну а вот теперь как быть? вы говорите,отсылать версию. Нужно отослать версию основного экзешника на сервер?только с этим я не разобрался,а вот если байтам отсылать,может это будет проще?
и как можно организовать загрузку файла прямо в игре?
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Как переслать переменную на сайт сервера?

Сообщение DbIMok 30 мар 2012, 20:50

рядом с билдом лежит файлик, в нем написано version=1.0.0. читаем файлик с сервера, в нем version=1.0.1
ресурсы в игру проще всего загружать через AssetBundle. у него есть кэш и встроенная система контроля версий. просто обновлять код не получится. имхо проще всего для обновления использовать стороннее приложение (можно написать и на юнити). оно обновит основное приложение и запустит его после обновления.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как переслать переменную на сайт сервера?

Сообщение Sergasteam 30 мар 2012, 23:07

с этим делом тоже разобрался,только вот не могу загрузить udater.exe с сервера,чтобы загрузка была не через браузер, а прямо через юнити и файл был сохранен соответственно в папке где проект.
делал методом:
Синтаксис:
Используется javascript
if (GUI.Button(Rect(posx+50,Screen.height/posy+290,200,30),"Загрузить")) {
file = new System.IO.File.WriteAllBytes(Application.dataPath,bytes);}
 

я не пойму что делать с байтами? нужно ли перед этим звонить серверу, после дозвона как действовать?
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Как переслать переменную на сайт сервера?

Сообщение Sergasteam 31 мар 2012, 12:58

Я справился с загрузкой апдейта, скачивается файл и сразу запускается,а приложение закрывается.
Синтаксис:
Используется javascript
function Start()
{
var url = "http://192.168.1.118/Setup.exe";
var www = new WWW(url); var progress1 = www;

        print(progress1.progress);

        while (!progress1.isDone) yield;

        var fileName : String = Application.persistentDataPath + "/" + "Setup.exe";
        print(" progress1.bytes.length = "+progress1.bytes.length);

        System.IO.File.WriteAllBytes(fileName, progress1.bytes);

        print("Cache saved: " + fileName);
        print("file download is done");

        yield WaitForEndOfFrame();
 

ну вот из этого кода,как мне сделать чтобы в функции OnGUI показывалось сколько % загружено и если 100% то вывести сообщение? Помогите плиз.
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Как переслать переменную на сайт сервера?

Сообщение Sergasteam 31 мар 2012, 14:14

и подскажите пожалуйста, как вывести в строку надпись cancel если событие Process() было установлено как Exited когда в консоли у меня такая надпись: Win32Exception: Операция была отменена пользователем?
Я не знаю как вернуть ошибку события в строку.
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Пред.

Вернуться в Скрипты

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

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