我有一个统一的脚本,该脚本搜索json文件并将RawImage的纹理更改为在相应搜索结果中找到的url图像地址。 我现在还想更改文本框中的文本以显示另一个字段结果。
我用于搜索和更改图像的代码是
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
public class UrlOpener : MonoBehaviour
{
public RawImage rawImage;
public InputField SearchBox;
public int displayIndex;
List<ArtImage> result;
public void Open()
{
Debug.Log("start");
rawImage.color = Color.white;
//string imageaddress;
using (StreamReader r = new StreamReader("Assets/run_results-2.json"))
{
string json = r.ReadToEnd();
ArtImages imgs = JsonUtility.FromJson<ArtImages>(json);
result = new List<ArtImage>();
if (imgs.artwork.Length > 0)
{
foreach(ArtImage img in imgs.artwork)
{
if (img.name.ToLower().Contains(SearchBox.text.ToLower()))
{
result.Add(img);
//StartCoroutine(applytexture(imageaddress,img.heightimg,img.widthimg)); // execute the section independently
//break;
}
}
if (result.Count > 0)
{
StartCoroutine(applytexture(result[0].image,result[0].heightimg,result[0].widthimg)); // execute the section independently
displayIndex = 0;
}
// the following will be called even before the load finished
}
}
}
private IEnumerator applytexture(string imageaddress, float heightimg,float widthimg)
{
Debug.Log("Loading ....");
WWW wwwLoader = new WWW(imageaddress); // create WWW object pointing to the url
yield return wwwLoader; // start loading whatever in that url ( delay happens here )
Debug.Log("Loaded");
rawImage.color = Color.white; // set white
rawImage.texture = wwwLoader.texture;
GetComponent<RectTransform>().sizeDelta = new Vector2(widthimg,heightimg);
}
}
[Serializable]
public class ArtImage
{
public string name;
public string image;
public float widthimg;
public float heightimg;
}
[Serializable]
public class ArtImages
{
public ArtImage[] artwork;
}
我需要在文本框中显示存储在同一结果的“名称”字段中的内容。
任何帮助将不胜感激。
一个简短的说明,我是C#的初学者,因此请尝试以一种ID理解哈哈的方式做出回应
欢呼
答案 0 :(得分:0)
要显示结果,有两种方法可以读出值并直接显示Json数据,也可以读出来然后直接从数据保存类中显示值
public void LoadGameData()
{
if (File.Exists(filePath))
{
string dataAsJson = File.ReadAllText(filePath);
jsonDataClass = JsonUtility.FromJson<JsonDataClass>(dataAsJson);
text.text = dataAsJson;
}
else
{
text.text = "No JsonFile found";
}
}
在使用此方法之前,您需要有一个数据保存类(用它替换JSONDataClass),然后需要一个公共Text文本,它是您的文本框,用于显示Json数据。 最后,您需要用Json文件路径替换文件路径。
如果您对热门话题还有其他疑问,建议您查看:Unity Json reader和Unity textfield Documentation