본문 바로가기

게임개발/UniRx

[UniRx Operator] Distinct, DistinctUntilChanged

Distinct


 

 

 

 

이전에 발생한적 있는 이벤트는 무시하고, 처음 발생한 이벤트만 통지한다.

 

 

 

더보기
using UnityEngine;
using UniRx;

public class Game : MonoBehaviour
{
    IntReactiveProperty _property = new IntReactiveProperty();

    void Start()
    {
        _property
            .Distinct()
            .Subscribe(value => Debug.Log(value));      // 구독시 이벤트 통지: 0

        _property.Value = 1;        // 이벤트 통지: 1

        _property.Value = 2;        // 이벤트 통지: 2

        _property.Value = 2;        // X

        _property.Value = 1;        // X

        _property.Value = 3;        // 이벤트 통지: 3

        _property.Value = 0;        // X
    }
}

 

 

DistinctUntilChanged


 

 

 

이벤트가 변경되면 통지한다.

 

 

 

 

더보기
using UnityEngine;
using UniRx;

public class Game : MonoBehaviour
{
    IntReactiveProperty _property = new IntReactiveProperty();

    void Start()
    {
        _property
            .DistinctUntilChanged()
            .Subscribe(value => Debug.Log(value));      // 구독시 이벤트 통지: 0

        _property.Value = 1;        // 이벤트 통지: 1

        _property.Value = 2;        // 이벤트 통지: 2

        _property.Value = 2;        // X

        _property.Value = 1;        // 이벤트 통지: 1

        _property.Value = 3;        // 이벤트 통지: 3

        _property.Value = 0;        // 이벤트 통지: 0
    }
}