я правильно использую Reactive UniRX? - PullRequest
0 голосов
/ 09 октября 2018

Я хочу получать входные данные с помощью UniRx, а также инициировать некоторые события в пользовательском интерфейсе. Так что я создаю эту систему ввода и поведение. Все они работают, но я не уверен, правильно ли я использую этот UniRX или нет?я не использую IObservable, потому что я не могу понять, как установить для него значение.

Также я должен утилизировать эту подпитку после?

Мой класс ввода Пример:

 public override void RegisterListeners()
{
    Movement = Observable.EveryFixedUpdate()
        .Select(_ =>
        {
            var x = Input.GetAxis(horizontalAxisName);
            var y = Input.GetAxis(verticalAxisName);
            return new Vector2(x, y);
        }).Where(x => x != Vector2.zero).ObserveOn(Scheduler.MainThread);
    CameraMovement = this.UpdateAsObservable()
        .Select(_ =>
        {
            var x = Input.GetAxis(cameraHorizontalAxisName);
            var y = Input.GetAxis(cameraVerticalAxisName);
            return new Vector2(x, y).normalized;
        }).ObserveOn(Scheduler.MainThread);

    CrunchButtonDown = this.UpdateAsObservable()
        .Select(_ =>
        {
            var x = Input.GetKeyDown(crunchKey);
            return x;
        }).Where(x => x == true).Distinct(); ...

Использование в классе винтовочного пистолета:

private void RegisterListeners()
{
    if (_subscription == null)
    {
        return;
    }

    _subscription.Add(gameManager.activeInputManager.UseButtonPress.Subscribe(x => Use()));
    _subscription.Add(gameManager.activeInputManager.ReloadButtonDown.Subscribe(x => Reload()));
}

Мое другое использование:

private BehaviorSubject<int> currentHealth;

.... Установить параметры по умолчанию

        currentHealth = new BehaviorSubject<int>(playerInfo.playerSetting.startHealth);

Установить значение:

  currentHealth.OnNext(currentHealth.Value + value);
...