今天小编学了一种用unity3d写了一个客户端,通过接口读取某天气系统的数据,可以得到一些地区的天气信息之类的。下面我们就来看一看。
首先用Unity3d做一个客户端界面:
我们通过查询得到我们想要查询的地区的天气状况,首先先写一个脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using LitJson;
public class Http : MonoBehaviour
{
public InputField Name; //定义的输入框
public Text day; //定义的文本
public Text night;
string url = "https://free-api.heweather.com/s6/weather/forecast"; //类似于IP地址的意思
void Start () {
//对定义的输入框和文本进行初始化
Name = transform.Find("Panel/NameInputField").GetComponent<InputField>();
day = transform.Find("Day").GetComponent<Text>();
night = transform.Find("Night").GetComponent<Text>();
}
void Update ()
{
}
public void Query()
{
//提供注册的url get请求 url后面直接追加请求数据
string registerUrl = this.url + "?location="+Name.text+ "&key=16bc4c3e167e4637a8c7cd1e85dfc89a";
WWW www = new WWW(registerUrl);
//直接发送请求
StartCoroutine(WaitForRegister(www));
}
//请求协程 url接通的时候
IEnumerator WaitForRegister(WWW www)
{
//www 在协程里面包含的有请求的时间
yield return www;
if (www.error != null)
{
print("网络未连接");
print(www.error);
}
else
{
//text 服务器返回的文本
print(www.text);
UserModel message = new UserModel();
message = JsonMapper.ToObject<UserModel>(www.text);
for (int i = 0; i < message.HeWeather6.Count; i++)
{
day.text = message.HeWeather6[i].daily_forecast[i].cond_txt_d;
}
}
}
}
要访问某服务器的信息就需要得到服务器的接口,小编是用的和风天气这个服务器的文档里的3-10天的天气状况里找到的接口和key值,只需要直接用就可以了。之后需要写一个类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Model
{
public string cid;
public string location;
public string parent_city;
public string admin_area;
public string cnty;
public string lat;
public string lon;
public string tz;
}
public class Update
{
public string loc;
public string utc;
}
public class Daily_forecastItem
{
public string cond_code_d;
public string cond_code_n;
public string cond_txt_d;
public string cond_txt_n;
public string date;
public string hum;
public string mr;
public string ms;
public string pcpn;
public string pop;
public string pres;
public string sr;
public string ss;
public string tmp_max;
public string tmp_min;
public string uv_index;
public string vis;
public string wind_deg;
public string wind_dir;
public string wind_sc;
public string wind_spd;
}
public class Tianqi
{
public string status;
public Model basic;
public Update update;
public List<Daily_forecastItem> daily_forecast = new List<Daily_forecastItem>(); //为什么要定义链表是通过json编译器编译看出来的,正常人通过返回的数据是看不出来的,所以可以把返回的数据通过json编译器编译一下
}
public class UserModel
{
public List<Tianqi> HeWeather6 = new List<Tianqi>();}
这个类里全是服务器里自带的属性,我们通过unity3d获取json数据后,可通过json编译器得到具体的属性和一些其他的,切记属性要全部定义正确,不然会报错,得不到具体服务器返回的数据.
好了,服务器接口就先写到这里,这里只是最简单的一种写法,毕竟我也只是刚入门几个月的“新手”,也只能写到这个地步,希望能够帮到你们,如果有错误或者有更好的建议之类的可以留言,小编会改正的。可能文档格式写的不是很清晰,看别人写的博客都有那个类似格子的那个,但是目前小编还不会,之后我会看看如何也弄成那种的,更方便大家的阅读。