Unity解析服务器Json文件

2023-11-08

需求:

   Json文件存在服务器上,Unity要获取并解析它。

原理:

   通过UnityWebRequest类获取服务器文本的功能,把Json文件传输到本地。
  再通过写好的解析类、Unity自带的JsonUtility.FromJson()解析方法,得到所需变量的值。

实现:

一、“UnityWebRequest类获取服务器文本”功能

在这里插入图片描述
在这里插入图片描述
  官方的代码

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
 
public class MyBehaviour : MonoBehaviour {
    void Start() {
        StartCoroutine(GetText());
    }
 
    IEnumerator GetText() {
        UnityWebRequest www = UnityWebRequest.Get("https://www.my-server.com");
        yield return www.SendWebRequest();
 
        if (www.result != UnityWebRequest.Result.Success) {
            Debug.Log(www.error);
        }
        else {
            // 以文本形式显示结果
            Debug.Log(www.downloadHandler.text);
 
            // 或者获取二进制数据形式的结果
            //这句代码,用不到,就删除,不要了
            byte[] results = www.downloadHandler.data;
        }
    }
}

  我代码里,这部分的截图
在这里插入图片描述

二、根据Json文件内容,写解析类

  Json文件内容:
  {
   “picInfoArray”:[{“url”:“adr1”},{“url”:“adr2”},{“url”:“adr3”}]
  }
  它由两个类组成:外部的类,有一个叫“picInfoArray”的数组变量;内部的类,有一个叫url的字符串变量

  我代码里,这部分的截图
在这里插入图片描述

三、用Unity自带的JsonUtility.FromJson()解析方法,得到所需变量的值

  我代码里,这部分的截图图中绿色Step1、Step2、Step3,及相应红线部分
在这里插入图片描述

四、加在游戏物体上的完整代码+打印出的语句
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using System;

[Serializable]
public class PicInfo
{
    public string url;
    //public int posNum;
    public PicInfo(string url)//, int posNum)
    {
        this.url = url;
        //this.posNum = posNum;
    }
}

[Serializable]
public class PicInfoCollection
{
    public PicInfo[] picInfoArray;
}

public class GetJsonFromServer : MonoBehaviour
{
    private string jsonFileFromServer;
    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(GetText());
    }
    IEnumerator GetText()
    {
        UnityWebRequest www = UnityWebRequest.Get("http://47.96.106.49/filetest/SelfWriteJson.json");
        yield return www.SendWebRequest();

        if (www.result != UnityWebRequest.Result.Success)
        {
            Debug.Log("传递不成功" + www.error);
        }
        else
        {
            //Step1:获取到网络“服务器端”Json文件
            jsonFileFromServer = www.downloadHandler.text;
            Debug.Log("Step1:" + jsonFileFromServer);
            
            //Step2:解析获得:外层较大的类,的对象
            PicInfoCollection picInfoCollection = JsonUtility.FromJson<PicInfoCollection>(jsonFileFromServer);
            Debug.Log("Step2:" + picInfoCollection.picInfoArray);

            //Step3:由大类的对象,打印:内层较小类对象的变量
            foreach (PicInfo picUrl in picInfoCollection.picInfoArray)
            {
                Debug.Log("Step3:" + picUrl.url);
            }

        }
    }
}

在这里插入图片描述

注意:

  此处得到的变量对象:url地址,是字符串形式,它是有引号的——有些地方用的时候,要把引号去掉。
  我的处理如下——把引号用空来替换:
  lunBoPics_URLStrArr[i]= lunBoPics_URLStrArr[i].Trim().Replace(""", "");

  注意,Replace第一个参数,直接写引号不管用,得用转义字符反斜杠,转一下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity解析服务器Json文件 的相关文章

随机推荐

  • Kafka 验证部署(单机版)kafka-producer-perf-test.sh 吞吐量测试工具的基本使用

    1 测试topic创建与删除 1 创建一个测试topic 名为test topic 创建3个分区 每个分区分配1个副本 因为是单机kafka 如果是集群的话可以分配多个副本 如果分配的副本数大于broker的数量时 会报错 bin kafk
  • 华为内部面试题库---(14)

    1 关于虚拟地址空间的说法错误的是 A 进程地址空间是用多少分配多少 4G仅仅是最大限额 B 进程的地址空间并不一定对应实际的物理页 C 不同进程的不同虚拟地址可以映射到相同的物理页 D 不同进程的相同虚拟地址不能映射到相同的物理页 解答
  • KNN回归-预测二手车

    KNN是一个典型的分类模型 就时预测类别 例如苹果 香蕉等 预测的结果是 训练集上已经包含的类别 并不会预测出新的类别 二手车价格预测是预测车的价格 是数值 理应按照回归算法来算 怎么用knn来实现回归问题呢 找到最近的K样本之后 我们直接
  • Android - 常见内存泄露问题盘点

    1 内存泄漏的本质 内存泄漏的本质就是对象引用未释放 当对象被创建时 如果没有被正确释放 那么这些对象就会一直占用内存 直到应用程序退出 例如 当一个Activity被销毁时 如果它还持有其他对象的引用 那么这些对象就无法被垃圾回收器回收
  • 层层深入高效地拿下商户收获刷脸红利

    无现金时代已陪伴我们许久 扫码支付给消费者带去诸多便利 正当人们刚刚养成扫码支付消费习惯的时候 刷脸支付这种新的支付方式又来了 两年后 我们或将迎来 无手机 支付时代 刷脸支付将使得消费者拥有更加流畅的支付体验 对商户来说 收款也变得更加高
  • python模块matplotlib.pyplot用法_python – 虽然使用pyplot.show(),但如何使用matplotlib保持图形大小不变?...

    看看下面的python示例 import matplotlib as mpl import matplotlib pyplot as plt mpl rcParams figure figsize 8 27 11 69 fig plt fi
  • Python 数据分析与数据可视化(三)列表、元组、字典、集合与字符串

    文章目录 3 列表 元组 字典 集合与字符串 3 1 列表与列表推导式 3 1 1 创建列表 下标访问 3 1 1 1 简介 3 1 1 2 创建列表 3 1 1 3 使用下标访问列表中的元素 3 1 2 列表常用方法 3 1 2 1 ap
  • 输入身份证号判断性别并求年龄

    include
  • 如何二次封装一个el-table组件并二次复用

    注 示例使用的是vue3和element 进行二次封装的 首先我们来看效果图 总共可以分为以下几个模块 表格数据操作按钮区域 表格信息提示区域 表格主体内容展示区域 表格分页区域 表单搜索没有封装在这里是为了降低代码的耦合性 有兴趣的可以查
  • c# dataGridView 数据合并单元格

    原文地址http sigechuizi cn article 133
  • unity登录界面和场景异步加载多种方式

    文字加载场景切换 挂到摄象机上 拖入文本 此文本用于显示加载文本的位置 实际显示内容位文中文本 正在加载中时显示 夏目正在努力加载哦 加载完成后显示 ok using UnityEngine using System Collections
  • 猿人学第3题-访问逻辑 - 推心置腹分析

    3 访问逻辑 推心置腹分析 1 请求页面并进行抓包 https match yuanrenxue cn match 3 2 对抓包进行分析 判断发现每次数据请求前先请求 https match yuanrenxue cn jssm 分析参数
  • 查T结果与Z结果的P值[转载]

    T检验P值表格来自 https blog csdn net m0 37777649 article details 74937242 Z检验表格来自 https wenku baidu com view 4926021f10a6f524cc
  • 关于虚拟机的认识

    一 在实体机 物理机 上 localhost它是一个域名 对应的ip地址为 127 0 0 1 计算机网络这本书中规定的 指的本机 关于127 0 0 1 为什么是 localhost 在 C Windows System32 driver
  • bash devtty No such device or address

    hexo d bash dev tty No such device or address error failed to execute prompt script exit code 1 fatal could not read Use
  • [囧途系列之特别篇]IT者的生存之路

    blog csdn net shenyisyn article details 8545410 此文特别送给 csdn网友 kkgbn 盖宝宁 前言 我的一个很早的转文 一对夫妻程序员的故事 看到了一个由kkgbn发表的评论 评论的大意是
  • Stanford CS143 速通PA1教程

    今天做完了CS143的PA1 感觉最难的地方在于官方没有具体的文档 edX 然后COOL语言调试比较困难 以下是我对同样打算入坑CS143的同学的一些帮助吧 速通前的准备 Virtual VM Setup 如果还没有搭好环境的 建议跟着官网
  • 信号和槽机制

    信号和槽是一种高级接口 应用于对象之间的通信 它是QT的核心特性 也是QT区别于其它工具包的重要地方 信号和槽是QT自行定义的一种通信机制 它独立于标准的C C 语言 因此要正确的处理信号和槽 必须借助于一个称为moc Meta Objec
  • c++申请内存空间的本质

    c 申请内存空间的本质 void teseTwo char cc 8 cout lt lt void cc lt lt endl cout lt lt 将cc的内存空间存储字符串 lt lt endl strcpy s cc hello c
  • Unity解析服务器Json文件

    文章目录 需求 Json文件存在服务器上 Unity要获取并解析它 原理 通过 UnityWebRequest类获取服务器文本 的功能 把Json文件传输到本地 再通过写好的解析类 Unity自带的JsonUtility FromJson