天天看點

用UniRX下載下傳圖檔

void DownloadHeadImg (string headImgUrl, string name) {
                UnityWebRequest request = new UnityWebRequest (headImgUrl);
                DownloadHandlerTexture textureHandler = new DownloadHandlerTexture (true);
                request.downloadHandler = textureHandler;

                request.SendWebRequest ().AsAsyncOperationObservable ()
                        .Subscribe (_ => {
                                if (_ != null && !_.webRequest.isNetworkError && !_.webRequest.isHttpError) {
                                        var imgData = request.downloadHandler.data;
                                        //儲存頭像到本地
                                        File.WriteAllBytes (GetHeadImgPath (name), imgData);

                                        ChangeHeadImg (ChangePlayerIcon);
                                        SDKSupervisorDemo.GADesignEvent_NoKey ("FB_HeadDownload_success");
                                } else {
                                        Debug.LogError ("下載下傳頭像失敗");
                                }
                        });
        }

        void ChangeHeadImg (Callback<Sprite> callback) {
                // Debug.LogError (GetHeadImgPath (userSaveData.fbName));
                if (!File.Exists (GetHeadImgPath (userSaveData.fbName))) {
                        Debug.LogError ("頭像不存在!!!");
                        callback (defaultPlayerIcon);
                        return;
                }
                byte[] data = File.ReadAllBytes (GetHeadImgPath (userSaveData.fbName));
                Texture2D imageTexture = new Texture2D (128, 128);
                imageTexture.LoadImage (data);
                Sprite sp = Sprite.Create (imageTexture, new Rect (0, 0, imageTexture.width, imageTexture.height), Vector2.zero, .01f);
                callback (sp);
        }

        string GetHeadImgPath (string name) {
                var hashCode = name.GetHashCode ();
                return string.Format ("{0}/{1}.png", Application.persistentDataPath, "PlayerMessageIcon" + hashCode);
        }
           
U3D