Unity如何使用从json字符串加载的变量作为更新部分的输入
Posted
技术标签:
【中文标题】Unity如何使用从json字符串加载的变量作为更新部分的输入【英文标题】:Unity How to use the variables loaded from json string as input in the update section 【发布时间】:2021-04-30 01:27:49 【问题描述】:我对 Unity 和 C# 编码很陌生,所以我的问题对你们中的一些人来说可能很愚蠢,但我目前正在尝试在其坐标来自 json 字符串的位置创建一个按钮。我只是不知道下一步该去哪里存档我的目标。如何使用 json 中的 xcoor 作为更新中的输入? 这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using SimpleJSON;
public class JSONcontroller : MonoBehaviour
public GameObject obj;
Vector3 buttonPos;
private string url = "http://localhost:3000/coordinates/";
// Start is called before the first frame update
void Start()
StartCoroutine(getData());
IEnumerator getData()
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if(request.isNetworkError||request.isHttpError)
Debug.LogError(request.error);
yield break;
JSONNode coordinates = JSON.Parse(request.downloadHandler.text);
string xcoor = coordinates["x1"];
string ycoor = coordinates["y1"];
//Debug.Log(xcoor);
// Update is called once per frame
void Update()
buttonPos = new Vector3(xcoor, ycoor, 4f);
if (Input.GetButton("Fire1"))
Instantiate(obj, buttonPos, Quaternion.identity);
还有我的示例 json 文件
"coordinates": [
"id": 1,
"x1": "5",
"y1": "2"
,
"id": 2,
"x1": "3",
"y1": "5"
,
"id": 3,
"x1": "5",
"y1": "7"
]
【问题讨论】:
使用布尔变量作为标志,并在 getData() 完成时将其设置为true
。将坐标存储在一个变量中,以便类函数可以访问。然后,在您的 Update() 中,检查标志何时为真以访问坐标
这可能是一个愚蠢的问题,但我怎样才能将从 json 中获得的内容存储为变量? string xcoor = coordinates["x1"]; string ycoor = coordinates["y1"];
下应该有什么
您是否在问如何将字符串解析为浮点数(或整数)以及如何存储数字?不好意思问了,好像没听懂你的问题
【参考方案1】:
“xcoor”和“ycoor”变量实际上是在 getData() 方法中声明的,这意味着这些变量只能在 getData() 方法中使用。
您可以在类的顶部声明它们,然后您就可以使用更新中的变量并设置按钮位置。
编辑代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using SimpleJSON;
public class JSONcontroller : MonoBehaviour
public GameObject obj;
Vector3 buttonPos;
private string url = "http://localhost:3000/coordinates/";
string xcoor;
string ycoor;
// Start is called before the first frame update
void Start()
StartCoroutine(getData());
IEnumerator getData()
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if(request.isNetworkError||request.isHttpError)
Debug.LogError(request.error);
yield break;
JSONNode coordinates = JSON.Parse(request.downloadHandler.text);
xcoor = coordinates["x1"];
coor = coordinates["y1"];
//Debug.Log(xcoor);
// Update is called once per frame
void Update()
buttonPos = new Vector3(xcoor, ycoor, 4f);
if (Input.GetButton("Fire1"))
Instantiate(obj, buttonPos, Quaternion.identity);
【讨论】:
以上是关于Unity如何使用从json字符串加载的变量作为更新部分的输入的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Scala Json 字符串中将 Json 放入 JS 变量中?