UniRx의 간단한 샘플 8 (Observable W.Get 다운로드)

5859 단어 UniRxUnityC#
UniRx의 간단한 샘플 사용 설명서
이전(완료 알림)
다음 단계(Timer 및 Interval 일정 시간 후 수행)

파일 다운로드


별로 쓸 수 없는 팁을 주고 싶어 이번에 HTML을 다운받아 봤다.
파일 다운로드 같은 건 Rx가 잘하는 분야가 분명해.
겸사겸사 진전상황도 취할 겁니다.
이번에는 좀 길어요.

미리 준비하다


특별한 상황만 아니면 SS가 없습니다.
WWW라는 GameObject에서cs 스크립트를 미리 붙여넣습니다.

다운로드


WW 다운로드를 담당하는 것은 Observable WW입니다.Get 메서드.
이번에는 서류 하나 가져와.
완성 후 게임 대상을 파란색으로 설정합니다
디버그 로그에 제목을 표시합니다.
겸사겸사 DL의 진전 상황도 얻었다.
소스 코드는 다음과 같습니다.
WWWSample.cs
using UnityEngine;
using System.Collections;
using UniRx;
using UniRx.Triggers;
using System;

public class WWWSample : MonoBehaviour {

    // Use this for initialization
    void Start()
    {
        //DLの進行度をプッシュしてくれるObservable
        ScheduledNotifier<float> progress = new ScheduledNotifier<float>();
        var watcher = progress.Subscribe(prog => Debug.Log(prog));//進行度の表示

        //ダウンロード
        var getter = ObservableWWW.Get("https://example.com/", null, progress)
            .Subscribe(body =>
        {
            //完了したら青に
            GetComponent<SpriteRenderer>().color = Color.blue;
            //タイトルを表示
            Debug.Log(body.Split(new[] { "<title>", "</title>" }, StringSplitOptions.None)[1]);

        });

        //gameObjectが削除されたらどちらも削除
        this.OnDestroyAsObservable().Subscribe(_ => {
            watcher.Dispose();
            getter.Dispose();
        });

    }
}
먼저
ObservableWWW.Get("https://example.com/ ", null, progress)
하하
ObservableWWW.Get(string url, Hash headers = null, IProgress progress = null)
구문을 사용합니다.
url은 동그랗습니다.
헤더스도 헤더야.
프로그레스에게 말하고 설명한 진전 상황을 대단한 사람이야.
다운로드가 완료되면 값이 Subscribe로 밀어집니다.
그래서 Subscribe에서 파란색 Debug로 바뀌었어요.제목을 Log로 지정합니다(거친 방법).
반면
ScheduledNotifier progress = new ScheduledNotifier();
Get의 세 번째 매개변수이며 IObservable입니다.
이 Get에 대한 진전이 있을 겁니다.
그래서 그 값을 직접 출력합니다.
마지막은 this.On DestroyAsobservable () 가 Destroy에 호출되면 호출됩니다.
이따가 치워.

실행 결과


DL이 완성되었습니다!

기타 방법


Observable WW도 얻은 WW를 직접 반환하는GetWWW나post 투점방의 Post 방법이 있습니다.

좋은 웹페이지 즐겨찾기