C# 调用Json脚本并在脚本中显示图像
我正在尝试访问一个Json脚本,它位于一个域中。该脚本包含两个超链接的图像。我曾尝试使用WWW访问脚本,但收到的图像是一个巨大的红色问号。很明显我走错了方向。所以我假设我应该通过unity对json脚本进行解码,然后通过单击来显示具有查看下一个/上一个图像能力的图像?我不熟悉Json,那么我如何调用脚本并读取它调用的图像呢 这就是我的代码看起来的样子,因为我尝试了另一个只有一个图像的非Json域,所以代码可以工作,而且工作非常好C# 调用Json脚本并在脚本中显示图像,c#,json,unity3d,C#,Json,Unity3d,我正在尝试访问一个Json脚本,它位于一个域中。该脚本包含两个超链接的图像。我曾尝试使用WWW访问脚本,但收到的图像是一个巨大的红色问号。很明显我走错了方向。所以我假设我应该通过unity对json脚本进行解码,然后通过单击来显示具有查看下一个/上一个图像能力的图像?我不熟悉Json,那么我如何调用脚本并读取它调用的图像呢 这就是我的代码看起来的样子,因为我尝试了另一个只有一个图像的非Json域,所以代码可以工作,而且工作非常好 void Start () { renderer
void Start ()
{
renderer.material.mainTexture = new Texture2D(4,4, TextureFormat.DXT1, false);
url = "http://hosting.xivmedia.com/JsonHome/JSON/more_games.json";
www = new WWW(url);
StartCoroutine(WaitForSeconds(www));
}
IEnumerator WaitForSeconds(WWW www)
{
yield return www;
www.LoadImageIntoTexture(renderer.material.mainTexture as Texture2D);
if (www.error == null)
{
Debug.Log("WWW Ok!: " + www.data);
imageLoaded = true;
}
else
{
Debug.Log("WWW Error: " + www.error);
}
}
void OnGUI()
{
GUI.DrawTexture(new Rect(20, 80, 100, 100), renderer.material.mainTexture as Texture2D, ScaleMode.StretchToFill);
}
是的,正如您所说的,您需要首先解码JSON脚本。您需要一个JSON解析器来完成这项工作。我极力推荐的是,但应该可以 因此,假设您的json只是URL列表,如下所示: [ "http://.....", "http://....." ] 并反序列化JSON,如下所示
List<ImageData> imageUrls = JsonConvert.Deserialize<List<ImageData>>(json);
foreach (ImageData data in imageUrls)
{
WWW imageWWW = new WWW(data.url);
imageWWW.LoadImageIntoTexture(renderer.material.mainTexture as Texture2D);
List imageUrls=JsonConvert.Deserialize(json);
foreach(ImageURL中的ImageData数据)
{
WWW-imageWWW=新的WWW(data.url);
imageWWW.LoadImageIntoTexture(renderer.material.mainTexture作为Texture2D);
谢谢你的彻底回复PEK,帮了我很多忙。只是一个简单的问题,我将如何保持我的代码动态?我计划增加更多的图像(当你点击时链接到一个链接)我需要它在游戏启动和运行时生效。另外,非常感谢Pek。我也选择了使用MijJSON,但是我对反序列化图像有一些问题——下面是如何将它与另一个插件结合起来的。你能帮助我理解如何使用MixJon来排解代码。d我帮了忙。不幸的是,我没有使用MiniJson来帮助你更多。至于你的代码是动态的,我恐怕这是一个非常普遍的问题。我建议你可以创建一个新问题并提供更多信息。我相信你会得到很多回复。
[
{
"name": "test",
"url" : "http://...."
},
{
"name": "something",
"url" : "http://..."
}
]
public class ImageData
{
public string name;
public string url;
}
List<ImageData> imageUrls = JsonConvert.Deserialize<List<ImageData>>(json);
foreach (ImageData data in imageUrls)
{
WWW imageWWW = new WWW(data.url);
imageWWW.LoadImageIntoTexture(renderer.material.mainTexture as Texture2D);