カスタマイズ機能長押し対応

This commit is contained in:
kimura 2022-05-19 15:07:46 +09:00
parent 7430e815af
commit fe48169373
1 changed files with 38 additions and 19 deletions

View File

@ -1,5 +1,6 @@
using System; using System;
using UniRx; using UniRx;
using UniRx.Triggers;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@ -24,8 +25,8 @@ namespace MyGame.Scenes.marketing.Scripts
[SerializeField] private Text unlockLevelText; [SerializeField] private Text unlockLevelText;
[SerializeField] private Text priceText; [SerializeField] private Text priceText;
[SerializeField] private Transform iconTarget; [SerializeField] private Transform iconTarget;
float pressTime = .5f;
private IObservable<Unit> ClickObservable => button.OnClickAsObservable().TakeUntilDestroy(this);
public IObservable<Unit> PurchaseObservable => purchaseSubject; public IObservable<Unit> PurchaseObservable => purchaseSubject;
private readonly Subject<Unit> purchaseSubject = new Subject<Unit>(); private readonly Subject<Unit> purchaseSubject = new Subject<Unit>();
public IObservable<Unit> SelectObservable => selectSubject; public IObservable<Unit> SelectObservable => selectSubject;
@ -49,7 +50,24 @@ namespace MyGame.Scenes.marketing.Scripts
selectedFrameObject.SetActive(state == ShopCustomizeItemState.Selected); selectedFrameObject.SetActive(state == ShopCustomizeItemState.Selected);
unselectedObject.SetActive(state == ShopCustomizeItemState.Purchased); unselectedObject.SetActive(state == ShopCustomizeItemState.Purchased);
}).AddTo(this); }).AddTo(this);
ClickObservable.ThrottleFirst(TimeSpan.FromSeconds(.2f)).Subscribe(_ =>
button.OnPointerDownAsObservable()
.Select(_ =>
Observable.Amb(
Observable.Timer(TimeSpan.FromSeconds(pressTime)).Select(x => true),
button.OnPointerUpAsObservable().Select(x => false))
)
.Switch()
.Subscribe(longPress =>
{
if (longPress)
{
if (itemState.Value == ShopCustomizeItemState.Purchased)
{
detailSubject.OnNext(Unit.Default);
}
}
else
{ {
switch (itemState.Value) switch (itemState.Value)
{ {
@ -67,6 +85,7 @@ namespace MyGame.Scenes.marketing.Scripts
default: default:
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
} }
}
}).AddTo(this); }).AddTo(this);
} }