Я хочу получать входные данные с помощью 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);