zhouqijie

UniRx对UnityEvent和UGUI的增强

UnityEvent和UI元素:

UnityEvent eventA;

void Start()
{
    //UnityEvent
    eventA.AsObservable()
        .Subscribe(_ => {});

    //基本UI元素事件:
    button.OnClickAsObservable()
        .Subscribe(_ => {
            //DoSomething
        });
    toggle.OnValueChangeAsObservable()
        .Subscribe(on => {
            if(on) {}
          });

    //EventSystem各种事件:
    img.OnBeginDragAsObservable()
        .Subscribe(_=>{});
    img.OnDragDragAsObservable()
        .Subscribe(eventArgs=>{});
    img.OnEndDragAsObservable()
        .Subscribe(_=>{});
}

除了Observable增强,还⽀持了Subscribe的增强,例如SubscribeToTextSubscribeToInteractable

public Toggle toggleTest;
public Button btnTest;
public Text txtTest;
void Start()
{
    toggleTest.OnValueChangedAsObservable().SubscribeToInteractable(btnTest);
    hp.AsObservable().SubscribeToText(txtTest);
}



对UIBehaviour的支持

Siki:UIBehaviour是所有UGUI空间的基类。
Siki:每个IXXXHandler就成为一个Trigger。
Siki:需要导入命名空间UniRx.Triggers。
Siki:具体参考ObservableTriggerExtensions.Component.cs。

ele.OnBeginDragAsObservable().Subscribe(dragEvent => {});
ele.OnDragAsObservable().Subscribe(dragEvent => {});
ele.OnEndDragAsObservable().Subscribe(dragEvent => {});
ele.OnPointerClickAsObservable().Subscribe(clickEvent => {});