Среда, 17 Октября 2018, 08:39

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Получать данные из интернета
Получать данные из интернета
dreenlineДата: Вторник, 17 Мая 2016, 20:10 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Привет! Ради любопытства возник вопрос, как брать данные из интернета, что бы например сделать прогноз погоды. Это надо добавить информацию с каких-нибудь сайтов на подобии гис метео, как можно это сделать? Ну и наверное держателям это не понравится, и они еще могут заставить убрать приложение?)
berilДата: Вторник, 17 Мая 2016, 21:16 | Сообщение # 2
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата dreenline ()
Привет! Ради любопытства возник вопрос, как брать данные из интернета, что бы например сделать прогноз погоды. Это надо добавить информацию с каких-нибудь сайтов на подобии гис метео, как можно это сделать? Ну и наверное держателям это не понравится, и они еще могут заставить убрать приложение?)

С чего это не понравится? Если есть публичное API почему бы и не делать




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
dreenlineДата: Вторник, 17 Мая 2016, 23:10 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Я что-то совсем загорелся сделать прогноз погоды. Если у кого-то завалялась статейка о том, как это сделать на юнити, или хотя бы что-то подобное, киньте плз

Добавлено (17 мая 2016, 23:10)
---------------------------------------------
Мало ли кому-то будет интересно. Нашел вот это. К сожалению моих знаний пока не достаточно, что бы разобраться во всем этом)


Сообщение отредактировал dreenline - Вторник, 17 Мая 2016, 23:11
LertmindДата: Вторник, 17 Мая 2016, 23:22 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Цитата dreenline ()
Мало ли кому-то будет интересно. Нашел вот это. К сожалению моих знаний пока не достаточно, что бы разобраться во всем этом)

Забавно, я только что такое же стал писать.

Вообще, если взять Яндекс, то там нельзя использовать данные публично https://yandex.ru/legal/weather_termsofuse/?lang=ru.
Есть сайт http://openweathermap.org/, там надо зарегистрироваться и получить ключ (API key), чтобы использовать. Можно бесплатно работать, но с некоторыми ограничениями http://openweathermap.org/price. Лицензия эта http://creativecommons.org/licenses/by-sa/4.0/, то есть для коммерческого использования разрешено, но с указанием авторства. Написал код:
Код
using UnityEngine;
using System.Collections;
using System;

[Serializable]
public class WeatherData
{
    public Main main;
}

[Serializable]
public class Main
{
    public float temp;
    public float pressure;
}

public class Weather : MonoBehaviour
{
    IEnumerator Start()
    {
        string url = "api.openweathermap.org/data/2.5/weather?q={0}&APPID={1}&units=metric";
        string city = "Moscow";
        string appid = ""; // API key
        url = string.Format(url, city, appid);

        WWW www = new WWW(url);
        yield return www;

        //print(www.text);
        var w = JsonUtility.FromJson<WeatherData>(www.text);
        print("Temp: " + w.main.temp + ", Pressure: " + w.main.pressure);
    }
}

Для JsonUtility приходится делать иерархию классов, я сделать только для температуры и давления. В appid надо ставить ключ, который получаешь при регистрации. Очевидно, такой код нельзя вставлять в публичный, потому что ограничение на запросы сразу истечёт, лучше на своём сервере получать данные и потом уже передавать приложению. Этот код получает такую JSON:
Код
{
    "coord": {
        "lon": 37.62,
        "lat": 55.75
    },
    "weather": [
        {
            "id": 803,
            "main": "Clouds",
            "description": "broken clouds",
            "icon": "04n"
        }
    ],
    "base": "cmc stations",
    "main": {
        "temp": 14.72,
        "pressure": 1005.2,
        "humidity": 72,
        "temp_min": 14.72,
        "temp_max": 14.72,
        "sea_level": 1024.71,
        "grnd_level": 1005.2
    },
    "wind": {
        "speed": 3.8,
        "deg": 143.002
    },
    "clouds": {
        "all": 64
    },
    "dt": 1463515258,
    "sys": {
        "message": 0.0073,
        "country": "RU",
        "sunrise": 1463447555,
        "sunset": 1463506831
    },
    "id": 524901,
    "name": "Moscow",
    "cod": 200
}

И я вывожу:
Temp: 14.72, Pressure: 1005.2


Сообщение отредактировал Lertmind - Вторник, 17 Мая 2016, 23:23
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Получать данные из интернета
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2018 Рейтинг