WWW TimeOut

WWW´Â TimeOutÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ ÄÚ·çƾÀ» »ç¿ëÇؼ­ ÇØ°áÇÏ°í ÀÖ´Ù.
´Ù¸¥ ½ÎÀÌÆ®ÀÇ ¼Ò½º¸¦ »ìÆì º¸ÀÚ.

¿¹1)
http://debuglog.tumblr.com/post/48691774277/«¹ªÎ«¿«¤«à«¢«¦«È処×â ½ÎÀÌÆ®ÀÇ ¼Ò½ºÀÌ´Ù.
´Ù¿î·Îµå ½ÃÀ۽𣠠requestTimeÀ» ±âÁØÀ¸·Î Çؼ­ timeOut ½Ã°£À» Áö³µÀ¸¸é break·Î ÄÚ·çƾÀÇ while¹®À» ¹þ¾î³­´Ù.

www.progress·Î À¥¼­¹ö¿¡¼­ ´Ù¿î·Îµå ÁøÇà »çÇ×À» üũ ÇÒ¼ö ÀÖ´Ù. ¹üÀ§´Â 0 ~ 1 »çÀÌÀÌ´Ù.
À¥¼­¹ö·Î ¾÷·Îµå ÇÒ¶§´Â WWW.uploadProgress¸¦ üũ ÇÑ´Ù.

using UnityEngine;
using System.Collections;

public class WWWTimeOutTest : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(RequestWWW());    
    }
    
    private IEnumerator RequestWWW()
    {
        WWW www = new WWW("http://www.planwallpaper.com/static/images/6775415-beautiful-images.jpg");

        yield return StartCoroutine(ResponceCheckForTimeOutWWW(www, 5.0f));
        
        if(www.error != null)
            Debug.LogError(www.error);
        else if(www.isDone)
            Debug.Log("Complete RequestWWW");
    }
    
    private IEnumerator ResponceCheckForTimeOutWWW(WWW www, float timeout)
    {
        float requestTime = Time.time;

        while(!www.isDone)
        {
            //print (requestTime + "  /  " + Time.time);
            if(Time.time - requestTime < timeout)
            {
                print("progress : " + www.progress);
                yield return null;
            }
            else
            {
                Debug.LogWarning("TimeOut");
                break;
            }
        }
        
        yield return null;
    }
}

¿¹2)
http://ftvoid.com/blog/post/1059 ¼Ò½ºÀÌ´Ù.
ConnectionManager ½ºÅ©¸³Æ®¿Í WWWTimeOutTest ½ºÅ©¸³Æ®°¡ GameObject¿¡ Ãß°¡ µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.

ftvoid ½ÎÀÌÆ®¿¡¼­´Â StartCoroutine( ) ¾øÀÌ ´ÙÀ½°ú °°Àº ÄÚµåÀÌ´Ù. 
connection.Request( )¸¦ È£ÃâÇÒ¶§ StartCoroutine( )À¸·Î È£ÃâÇϴ°ɷΠ¼öÁ¤Çß´Ù.

yield return connection.Request(url);

===> ¼öÁ¤
yield return StartCoroutine(connection.Request(url));

//ConnectionManager.cs
using UnityEngine;
using System.Collections;

public class ConnectionManager : MonoBehaviour {
    public float timeOut = 30;  
    [HideInInspector]
    public WWW result;  
    [HideInInspector]
    public bool isTimeOut = false;
    
    public IEnumerator Request(string url) {
        var www = new WWW(url);
        var endTime = Time.realtimeSinceStartup + timeOut;
        
        while ( !www.isDone || Time.realtimeSinceStartup < endTime ) {
            yield return 0;
        }
        
        isTimeOut = !www.isDone;
        result = www;
    }
}

//WWWTimeOutTest.cs
using UnityEngine;
using System.Collections;

public class WWWTimeOutTest : MonoBehaviour {
    void Start () {
        StartCoroutine(TestConnect("http://www.planwallpaper.com/static/images/6775415-beautiful-images.jpg"));
    }
   
    IEnumerator TestConnect(string url) {
        var connection = GameObject.FindObjectOfType<ConnectionManager>();
        yield return StartCoroutine(connection.Request(url));
       
        if ( connection.isTimeOut ) {
            Debug.Log("TimeOut!");
        } else {
            Debug.Log("NotTimeOut!");
        }
    }

    void OnGUI()
    {
        var connection = GameObject.FindObjectOfType<ConnectionManager>();
        if (connection == null || connection.isTimeOut == true || connection.result == null)
            return;
       
        GUI.Box (new Rect (0, 0, Screen.width, Screen.height), connection.result.texture);
    }
}



ÂüÁ¶)
http://debuglog.tumblr.com/post/48691774277/«¹ªÎ«¿«¤«à«¢«¦«È処×â
http://ftvoid.com/blog/post/1059
https://www.snip2code.com/Snippet/64316/A-handy-class-to-use-WWW-and-WWWForm-on-