Unity - A计划(一年有效期) 扫二维码继续学习 二维码时效为半小时

(61评价)
价格: 2165.00元
丛林战争里回调函数不能刷新ui的问题
李大狗发起了问答2018-03-30
8
回复
463
浏览

看了丛林战争学到了回调函数不能访问ui,需要异步方法,比如update,但是update里是不是不能调用协程

 private string url;
 private string enterPlayerIndex;

private bool isPlayerEnterRoom = false;

 private void Update()
    {

          if (isPlayerEnterRoom == true)
          {
            SetUserIcon(url, enterPlayerIndex);
            isPlayerEnterRoom = false;
            url = null;
            enterPlayerIndex = null;
          }

    }

 

    public void SetUserIconSync(string url, string enterPlayerIndex)
    {
        isPlayerEnterRoom = true;
        this.url = url;
        this.enterPlayerIndex = enterPlayerIndex;
    }
 

    public void SetUserIcon(string url, string enterPlayerIndex)
    {
        StartCoroutine(UpdateLoadUserIcon(url,enterPlayerIndex));
    }

   

    IEnumerator UpdateLoadUserIcon(string url, string index)
    {//客户端更新之后加入的别的客户端
       
       
        WWW www = new WWW(url);
        yield return www;
        if (www.isDone && www.error == null)
        {
            Texture2D texture2D = www.texture;
            imageList[int.Parse(index) - 1].sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width,                       texture2D.height), Vector2.zero);
            //isPlayerEnterRoom = false;
        }
        
    }

所有回复
  • 李大狗 2018-03-30

    发现不能执行

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2018-03-30

    回调函数不能访问ui,不过update里面是可以发起协程的哈

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2018-03-30

    你上述缩写的程序并没有发起协程,你这里说不能执行,具体是指的哪个方法不能执行呢

    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • 李大狗 2018-04-01

      public override void OnResponse(string data)
        {
            string[] strs = data.Split(',');
            ReturnCode returnCode = (ReturnCode)(int.Parse(strs[0]));
            
            if (returnCode == ReturnCode.NeedCallBack)
            {
             
          
            }
            else if (returnCode == ReturnCode.Success)
            {
                //得到了别的客户端发来的本地需要更新的用户信息
                string uRl = strs[1];
                string iNdex = strs[2];
                roomPanel.SetUserIconSync(uRl,iNdex);
            }
            
          
            
        }

    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2018-04-01

    首先   roomPanel.SetUserIconSync(uRl,iNdex);这个代码不能再回调函数里面去执行,这个我视频里面应该说过的

    这个代码放在update里面去执行

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2018-04-01

    把isPlayerEnterRoom 设置为true,应该就执行了

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!