UniRx의 간단한 샘플 중 하나(Subscribe 이벤트 등록)

8082 단어 UniRxUnityC#
UniRx의 간단한 샘플 사용 설명서
이전(Rx 오버뷰)
다음(Where 및 Select)

UniRx의 간단한 샘플


Rx에 신경을 많이 썼지만 많은 사이트에서 설명이 어려워 전혀 배우지 못했다.
그래서 저는 간단한 Sample을 바탕으로 공부하면서 남고 싶어요.
참고로 IEnumerator의 LINQ에 대해 잘 알고 있고 이벤트에도 잘 알고 있는 C#er
UniRx로 설명하고 있는데 Rx도 괜찮은데... 아마!!
(이렇게 말하지만 샘플은 주로 UniRx의 Every Update만 사용한다)

말하자면 Rx가 뭐예요?


오해를 두려워하지 않고 단도직입적으로 한 말
C# 대상
* 다기능 이벤트
웹학과를 향한 사람.
* 다기능 jQuery
네.
그래서 예를 들어 버튼을 눌렀을 때 어떤 처리를 해야 하는지
마우스를 버튼 위에 놓으면 색상이 바뀔 수 있습니다.
뿐만 아니라, 나는 열심히 공부할 것이다.

조금 정면으로 설명해주세요.


Rx를 구성하는 부품은 두 개입니다.
우선 첫 번째는 처리 절차다.
버튼 이벤트가 말한 이거.
events
//              ↓これ
button.Click += button_Click;
클릭해서 뭘 하고 싶은지, 몇 초 뒤에 뭘 하고 싶은지, 뭘 하고 싶은지, 그 행사를 하고 싶은지가 중요해요.
이게 바로 Observer 모드의 청취자입니다.
또 다른 대상은 이 처리 프로세스에 값을 넣어 처리를 시작하는 대상이다
어쨌든 버튼을 누르면 이 이벤트의 로그인을 해야 합니다.
이게 바로 Observer 모드의 관찰자입니다.
이거 두 개 합쳐.
1: 옵서버에게 프로세스 등록
2: 대응하는 이벤트가 발생하면 처리 프로세스에 값을 추가하여 처리하도록 한다
그림과 같이

이미 여러 번 말했지만 이 생각은 C#에 이미 있나.
중요한 것은 이 Rx를 활동의 연장으로 포착할 수 있다는 것이다.
무슨 일이 생기면 활동이 일어나는 절차가 솔직하게 적용될 수 있다.
다른 한편, 행사에는 없는 편리한 기능이 많다.
그래서 앞으로 Rx 특유의 능력을 설명해 줬으면 좋겠다.
(UniRx로 하지만)

가장 간단한 샘플


우선 UniRx로 Start를 쓴 후 GameObject가 (0, 1) 처리로 이동해 보십시오.
무슨 일이든 쉬운 놈부터 시작이야.
그래서 스프릿만 만들고 거기서 Subscribe 같은 스크립트를 만들어 붙여넣은 게임 대상을 만든다.

Subscribe.cs의 내용은 이렇습니다.
Subscribe.cs
using UnityEngine;
using System.Collections;
using UniRx;

public class SubscribeSample : MonoBehaviour
{
    // Use this for initialization
    void Start () {
        //Returnで(0,1)という値をSubscribe内に流し込んでる
        Observable.Return(new Vector2(0, 1))
            .Subscribe(v => gameObject.transform.position = v);
}
먼저 수치를 입력한 측의 등록 주소는
Observable.Return(new Vector2(0, 1))
네.
Observable.Return (T value) 은 value 유입을 한 번만 등록된 처리 중 (이 유입을 밀어넣기라고 한다).
이번에 등록 처리에 new Vector2(0,1)를 한 번만 주입한 셈이다.
다음은 Subscribe입니다.
이번에는 파라미터가 위치 정보라고 기대하고 게임 Object의position을 그 위치에 두었을 뿐입니다.
등기소.Subscribe(Action onNext)에 로그인하여 onNext 처리에 로그인합니다.이벤트에 대응하는 +=.
이 Observable라는 분류는 다른 다양한 수치의 유입 방법을 정의하기 때문에 제가 상세하게 설명해 드리겠습니다.
이걸 실행하면sprite가 (0, 1) 의 위치에 올 것 같습니다.
그럼 다음 업데이트 후 오른쪽으로 이동하세요.
lang
using UnityEngine;
using System.Collections;
using UniRx;
using UniRx.Triggers;

public class SubscribeSample : MonoBehaviour
{

    // Use this for initialization
    void Start () {

        //Returnで(0,1)という値をSubscribe内に流し込んでる
        Observable.Return(new Vector2(0, 1))
            .Subscribe(v => gameObject.transform.position = v);

        //UpdateAsObservableでUpdateのたびに値流しこんでる
        this.UpdateAsObservable().Subscribe(_ => Move(0.01f, 0));
//イベントだと this.update += _=>Move(0.01f, 0)という感じ(updateなんてイベントないけど)
    }


    /// <summary>
    /// (dx,dy)だけ移動させる
    /// </summary>
    /// <param name="dx"></param>
    /// <param name="dy"></param>
    public void Move(float dx, float dy)
    {
        gameObject.transform.position += new Vector3(dx, dy, 0);
    }
}
이번에는 this.는 Update As Observable()의 등록 주소입니다.
이것은 업데이트할 때마다 처리가 시작되는 로그인지입니다.
참고로 이this는 생략할 수 없습니다.UniRx입니다.Triggers.ObservableTriggerExtensions;를 참고하십시오.
프레임마다 위치를 업데이트합니다.
즉, 실행한 후 (0,1)로 이동한 후 오른쪽으로 계속 이동하는 것이다.
Rx의 출발선은 이렇게 등록지에서 등록한 다음에 등록지에서 적당한 시기에 수치를 처리하는 것이다.
아무튼 이번엔 여기까지.
참고로 이 UniRx는 일본인neuecc이 만든 것으로 Japanese에서 작가의 페이지를 읽어주셔서 감사합니다.
이 견본은 대상의 수명을 고려하지 않는다.자세한 내용은 UniRx의 간단한 샘플 6 (가입 중지)를 참조하십시오.

좋은 웹페이지 즐겨찾기