Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用Json脚本并在脚本中显示图像_C#_Json_Unity3d - Fatal编程技术网

C# 调用Json脚本并在脚本中显示图像

C# 调用Json脚本并在脚本中显示图像,c#,json,unity3d,C#,Json,Unity3d,我正在尝试访问一个Json脚本,它位于一个域中。该脚本包含两个超链接的图像。我曾尝试使用WWW访问脚本,但收到的图像是一个巨大的红色问号。很明显我走错了方向。所以我假设我应该通过unity对json脚本进行解码,然后通过单击来显示具有查看下一个/上一个图像能力的图像?我不熟悉Json,那么我如何调用脚本并读取它调用的图像呢 这就是我的代码看起来的样子,因为我尝试了另一个只有一个图像的非Json域,所以代码可以工作,而且工作非常好 void Start () { renderer

我正在尝试访问一个Json脚本,它位于一个域中。该脚本包含两个超链接的图像。我曾尝试使用WWW访问脚本,但收到的图像是一个巨大的红色问号。很明显我走错了方向。所以我假设我应该通过unity对json脚本进行解码,然后通过单击来显示具有查看下一个/上一个图像能力的图像?我不熟悉Json,那么我如何调用脚本并读取它调用的图像呢

这就是我的代码看起来的样子,因为我尝试了另一个只有一个图像的非Json域,所以代码可以工作,而且工作非常好

 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);