示例#1
0
    //IEnumerator wwwinfosend(string URL, action state,bool isconver)
    //{

    //    ///实现的信息传递模块 首先获取从网络的信息并加返回的信息自定义成自己的类 随后进行处理通过标记为与事件调用对应的方法
    //    ///此处自定义类为 wwwinfo 里面包含了一个状态头与一个返回的信息内容 但因使用一个队列所有操纵时需要对队列进行加锁


    //    if (URL != null)
    //    {
    //        UnityWebRequest www = UnityWebRequest.Get(URL);
    //        yield return www.Send();


    //        if (www.error == null)
    //        {
    //            wwwinfo tempinfo = new wwwinfo();
    //            tempinfo.returnstate = state;
    //            tempinfo.textinfo = www;

    //            lock (lockgo)
    //            {

    //            //同一对象多个方法同时调用考虑锁的问题
    //            LoginInfo.Instance().wwwinstance.listformwwwinfo.Enqueue(tempinfo);


    //            switch (LoginInfo.Instance().wwwinstance.listformwwwinfo.Peek().returnstate)
    //            {
    //                case action.login:

    //                    break;
    //                case action.reganstion:
    //                    break;
    //                case action.isalive:
    //                    break;
    //                case action.gethallgame:
    //                    break;
    //                case action.getroomlist:
    //                    break;
    //                default:
    //                    break;
    //            }

    //            }
    //        }
    //        else
    //        {
    //            //非正常的情况下重连
    //            if (isconver == true)
    //            {
    //                StartCoroutine(wwwinfosend(URL, state, isconver));

    //            }

    //        }
    //    }
    //}

    /// <summary>
    /// 重复监测时候有版本改变
    /// </summary>
    /// <param name="URL"></param>
    /// <returns></returns>
    IEnumerator couwnt(string URL)
    {
        UnityWebRequest www = UnityWebRequest.Get(URL);

        yield return(www.Send());

        JsonData jd = JsonMapper.ToObject(www.downloadHandler.text);

        if (www.error == null)
        {
            wwwinfo temp = new wwwinfo();

            if (jd["code"].ToString() == "200")
            {
                temp.statetype = (int)jd["info"]["is_open"];
                temp.textinfo  = www.downloadHandler.text;

                if (listformwwwinfo.Count > 0)
                {
                    if (GameMagert.iscomeback == true)
                    {
                        Debug.LogError("中断之后弹出信息" + listformwwwinfo.Dequeue());
                        listformwwwinfo.Enqueue(temp);

                        //GameMagert.isupdatetime = true;
                        GameMagert.iscomeback          = false;
                        GameMagert.swithonislistchange = true;
                        Debug.LogError("完成中断后的更新");
                        yield break;
                    }
                    ///当消息队列的
                    if (listformwwwinfo.Peek().statetype == temp.statetype)
                    {
                    }
                    else
                    {
                        listformwwwinfo.Enqueue(temp);
                    }
                }
                else
                {
                    listformwwwinfo.Enqueue(temp);
                }
            }
            else
            {
                Debug.Log(jd["msg"].ToString());
            }
        }
        else
        {
            Debug.Log(www.error);
        }
    }
示例#2
0
    IEnumerator wwwtosever(string URL, listtype state, action act, bool isconver)
    {
        if (URL != null)
        {
            UnityWebRequest www = UnityWebRequest.Get(URL);
            Debug.Log(URL);
            yield return(www.Send());


            wwwinfo temp = new wwwinfo();



            if (www.error == null)
            {
                if (state == listtype.listforlogininfo)
                {
                    //temp.statetype = (int)state;
                    //temp.textinfo = www.downloadHandler.text;
                    LoginInfo.Instance().wwwinstance.listforlogininfo.Enqueue(www);
                }
                else if (state == listtype.listforhallinfo)
                {
                    //temp.statetype = (int)state;
                    //temp.textinfo = www.downloadHandler.text;
                    LoginInfo.Instance().wwwinstance.listforhallinfo.Enqueue(www);
                }
                else if (state == listtype.listforgameinfo)
                {
                    //temp.statetype = (int)state;
                    //temp.textinfo = www.downloadHandler.text;
                    LoginInfo.Instance().wwwinstance.listforgameinfo.Enqueue(www);
                }
                /// 使用了事件跟委托 进行了观察者模式的使用
                switch (act)
                {
                case action.login:
                    if (logincallback != null)
                    {
                        logincallback(LoginInfo.Instance().wwwinstance.listforlogininfo.Dequeue());
                    }
                    break;

                case action.reganstion:
                    if (regantsionback != null)
                    {
                        regantsionback(LoginInfo.Instance().wwwinstance.listforlogininfo.Dequeue());
                    }
                    break;

                case action.isalive:
                    if (isaliveeventback != null)
                    {
                        isaliveeventback(LoginInfo.Instance().wwwinstance.listforgameinfo.Dequeue());
                    }

                    break;

                case action.gethallgame:
                    if (gamelisteventback != null)
                    {
                        gamelisteventback(LoginInfo.Instance().wwwinstance.listforgameinfo.Dequeue());
                    }
                    break;

                case action.getroomlist:
                    if (roomlistevnetback != null)
                    {
                        roomlistevnetback(LoginInfo.Instance().wwwinstance.listforhallinfo.Dequeue());
                    }
                    break;

                default:
                    break;
                }
            }
            else
            {
                if (isconver == true)
                {
                    StartCoroutine(wwwtosever(URL, state, act, isconver));
                }
            }
        }

        //Debug.Log("已进入对象");
    }