今天小编学了一种用unity3d写了一个客户端,通过接口读取某天气系统的数据,可以得到一些地区的天气信息之类的。下面我们就来看一看。

首先用Unity3d做一个客户端界面:

unity 获取远程服务器文件列表 unity连接服务器获取数据_服务器

我们通过查询得到我们想要查询的地区的天气状况,首先先写一个脚本

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编译器得到具体的属性和一些其他的,切记属性要全部定义正确,不然会报错,得不到具体服务器返回的数据.


好了,服务器接口就先写到这里,这里只是最简单的一种写法,毕竟我也只是刚入门几个月的“新手”,也只能写到这个地步,希望能够帮到你们,如果有错误或者有更好的建议之类的可以留言,小编会改正的。可能文档格式写的不是很清晰,看别人写的博客都有那个类似格子的那个,但是目前小编还不会,之后我会看看如何也弄成那种的,更方便大家的阅读。