0

Unity3D を使用して、ios および android 用の 2D モバイルゲームに取り組んでいます。ゲームでは、JSON 応答をファイルに保存する必要があります。そのために NGUI と MiniJSON を使用します。www関数から始めてJSOn応答を取得し、それをファイル(パスを含む)に保存して他のスクリプトからロードする方法を知りたいです。多すぎる場合は、その例を教えてください。

ありがとうございました

4

1 に答える 1

1

まだコードをテストしていませんが、アイデアが得られるかもしれません:-)

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;

public class WWWJsonTest : MonoBehaviour
{
    private const float SECONDS_BEFORE_TIMEOUT = 10;

    private const string URL = "INSERT URL HERE";

    private const string FILE_PATH = "INSERT FILE PATH";

    public void DownloadAndSave()
    {
        StartCoroutine(DownloadCoroutine());
    }

    public Dictionary<object, object> GetSavedData()
    {
        // Use ReadContents() and do your MiniJSON magic here
        return null;    
    }

    private IEnumerator DownloadCoroutine()
    {
        var requestHeaders = new Hashtable()
        {
            { "Connection", "close"},
            { "Accept", "application/json"}
        };

        using(var request = new WWW(URL, null, requestHeaders))
        {
            float timeStarted = Time.realtimeSinceStartup;

            while(!request.isDone)
            {
                // Check if the download times out
                if(Time.realtimeSinceStartup - timeStarted > SECONDS_BEFORE_TIMEOUT)
                {
                    Debug.Log("Download timed out");
                    yield break;
                }

                yield return null;
            }

            // Check for other errors
            if(request.error != null)
            {
                Debug.Log(request.error);

                yield break;
            }


            SaveContents(request.text);
        }
    }

    private string ReadContents()
    {
        string ret;

        using(FileStream fs = new FileStream(FILE_PATH, FileMode.Open))
        {
            BinaryReader fileReader = new BinaryReader(fs);

            ret = fileReader.ReadString();

            fs.Close();
        }

        return ret;
    }

    private void SaveContents(string text)
    {
        using(FileStream fs = new FileStream(FILE_PATH, FileMode.Create))
        {
            BinaryWriter fileWriter = new BinaryWriter(fs);

            fileWriter.Write(text);

            fs.Close();
        }
    }   
}
于 2013-05-16T07:59:16.557 に答える