Unity3D 通过JSON查询天气
一、天气查询API
获取天气信息,首先要找到提供天气数据的接口,我使用的是高德地图免费为我们提供的,网址为 https://lbs.amap.com/api/webservice/guide/api/weatherinfo
使用的前提是注册一个高德账号用来获取返回参数中所需要的key,步骤很简单,按照网址中的提示来就可以了。
二、获取JSON数据
获取网络数据,需要用到UnityWebRequest类,通过它的Get方法可以得到网址中的信息,返回的是含有URI中数据的UnityWebRequest对象。
UnityWebRequest re = UnityWebRequest.Get(string uri);
接下来使用它的 downloadHandler 方法来管理从远程服务器中接受的数据(想了解更多用法可以去看官方文档)
string JsonData = re.downloadHandler.text; //text返回的是通过UTF-8编码的字符串
好了,现在我们已经拥有JSON类型的天气数据了
三、JSON对象序列化和反序列化
序列化是将对象转化为字节序列的过程。在Unity中可以使用其自带的类进行序列化和反序列化 -> JsonUtility,下面是它包含的方法

我们只需要使用它的FormJson方法来创建对象,官方给出的案例是
using UnityEngine; [System.Serializable]
public class PlayerInfo
{
public string name;
public int lives;
public float health; public static PlayerInfo CreateFromJSON(string jsonString)
{
return JsonUtility.FromJson<PlayerInfo>(jsonString);
} // Given JSON input:
// {"name":"Dr Charles","lives":3,"health":0.8}
// this example will return a PlayerInfo object with
// name == "Dr Charles", lives == 3, and health == 0.8f.
}
在内部,此方法使用 Unity 序列化器;因此创建的类型必须受序列化器支持,它必须是使用 Serializable 属性标记的普通类/结构,并且为public类型,天气数据也可以用类似方法进行读取
//定义结构体存储json返回的天气信息
[Serializable]
public struct MainJson
{
public string status;
public string count;
public string info;
public string infocode;
public List<LiveInfo> lives;
} [Serializable]
public struct LiveInfo
{
public string provice;
public string city;
public string adcode;
public string weather;
public string temperature;
public string winddirection;
public string windpower;
public string humidity;
public string reporttime;
} MainJson j = JsonUtility.FromJson<MainJson>(re.downloadHandler.text); if (j.status == "")
{
print(j.info);
}
else
{
string cityName = j.lives[].provice + j.lives[].city;
}
这是我写的一个小demo(不是完整代码)。
值得注意的是,结构体中定义的变量名要和JSON中的数据一致,名称一致,不需要的数据可以不定义。 下面是效果图

Unity3D 通过JSON查询天气的更多相关文章
- BAE+Python+Django+Wechatpy+Baidu weather api +微信订阅号 = 实现微信查询天气
最近想在微信上面实现天气查询,分两个步骤: 1.被动回复:输入天气.xx天气获取天气情况 2.主动推送:每天定时推送天气(针对24小时内产生交互的人) 目前已经实现第一个步骤,如下: 现将实现此功能环 ...
- TP5结合聚合数据API查询天气
php根据城市查询天气情况看到有人分享java的查询全国天气情况的代码,于是我想分享一个php版本的查询天气接口.免费查询天气的接口有很多,比如百度的apistore的天气api接口,我本来想采用这个 ...
- python+tkinter+动画图片+爬虫(查询天气)的GUI图形界面设计
1.完整代码: import time import urllib.request #发送网络请求,获取数据 import gzip #压缩和解压缩模块 import json #解析获得的数据 fr ...
- 通过Azure bot framework composer 设计一个AI对话机器人bot(查询天气)
本文介绍通过机器人框架设计器 (Bot framework composer)接近拖拉拽的方式设计一个聊天机器人,该聊天机器人的主要功能是发起http请求查询天气.当然,稍微变通下,可以用来查询几乎任 ...
- Unity3d之json解析研究
Unity3d之json解析研究 json是好东西啊!JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式 JSON简单易用,我要好好研究一下 ...
- 【Python3爬虫】自动查询天气并实现语音播报
一.写在前面 之前写过一篇用Python发送天气预报邮件的博客,但是因为要手动输入城市名称,还要打开邮箱才能知道天气情况,这也太麻烦了.于是乎,有了这一篇博客,这次我要做的就是用Python获取本机I ...
- JS 实现Json查询的方法实例
其实很简单,我这部分代码,前一部分是简单的实现如何使用JS写模板,第二个就是具体的实现了JSON查询的一个扩展. 以后查询Json就有了利器了. 代码如下: /* * 定义模板函数 ...
- CCF CSP 201709-3 JSON查询
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-3 JSON查询 问题描述 JSON (JavaScript Object Not ...
- Unity3d使用json与javaserver通信
Unity3d使用json能够借助LitJson 下载LitJson,复制到Unity3d工作文件夹下 于是能够在代码中实现了 以下发送请求到server并解析 System.Collections. ...
随机推荐
- TestNG(十) 依赖测试
package com.course.testng.suite; import org.testng.annotations.Test; public class DepenTest { @Test ...
- Netty源码分析 (十一)----- 拆包器之LengthFieldBasedFrameDecoder
本篇文章主要是介绍使用LengthFieldBasedFrameDecoder解码器自定义协议.通常,协议的格式如下: LengthFieldBasedFrameDecoder是netty解决拆包粘包 ...
- FourAndSix2 靶机渗透
0x01 简介 FourAndSix2是易受攻击的一个靶机,主要任务是通过入侵进入到目标靶机系统然后提权,并在root目录中并读取flag.tx信息 FourAndSix2.镜像下载地址: https ...
- Nginx 配置Https转发http、 websocket
系统启动Nginx后,报 [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)错误的处理方式,分为两种: 第一种:端口小于1024 ...
- Cocos Creator 中 _worldMatrix 到底是什么(上)
Cocos Creator 中 _worldMatrix 到底是什么(上) 1. (矩阵)Matrix是什么,有什么用 (矩阵)Matrix一个神奇的存在?在开发过程中对里边各项值的含义是不是抓耳挠腮 ...
- mybatis无法给带有下划线属性赋值问题
https://blog.csdn.net/qq_33768099/article/details/69569561
- java数据结构——二叉树(BinaryTree)
前面我们已经学习了一些线性结构的数据结构和算法,接下来我们开始学习非线性结构的内容. 二叉树 前面显示增.删.查.遍历方法,完整代码在最后面. /** * 为什么我们要学习树结构. * 1.有序数组插 ...
- JavaSE知识点总结(一)
第一章 课程介绍第二章 java语言概述 课时2:作业 1.常用软件分为那两类? 系统软件 应用软件 2.人机交互的两种方式是哪两种? 图形化界面 代码行命令 课时3:作业 1.java语言的特性有哪 ...
- 第四周 Java课件内容动手动脑
1.JDK中的Math类 package ke1; public class TestMath { public static void main(String[] args) { /*------- ...
- vue中关于滚动条的那点事
vue中关于滚动条的那点事 不知道你有没有遇到过这种情况,有时当页面切换时,滚动条不在页面的顶端.最近半路加入一个项目,就遇到这种情况.(若只是为了解决此问题,可直接翻到最下方)下面谈谈解决此问题的过 ...