¡¡UniRx ¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¥ª¥Ú¥ì¡¼¥¿¤Î¤¦¤Á¡¢ Zip() ¥á¥½¥Ã¥É¤È Skip() ¥á¥½¥Ã¥É¤ò³èÍѤ¹¤ë¤³¤È¤Ç¡¢
ReactiveProperty ¤Ç¹ØÆɤ·¤Æ¤¤¤ëÃͤò DOCounter() ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¥¢¥Ë¥áɽ¼¨¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¥ª¥Ú¥ì¡¼¥¿¤È¤Ï Subject ¤Ë¤è¤Ã¤Æ OnNext ¥á¥Ã¥»¡¼¥¸¤¬È¯¹Ô¤µ¤ì¤¿ºÝ¤Ë¡¢Subscribe ¤¹¤ëÁ°¤Ë¶´¤ß¹þ¤à¤³¤È¤¬¤Ç¤¤ë½èÍý¤Î¤³¤È¤Ç¡¢UniRx ¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É·²¤Ç¤¹¡£
¤¿¤¯¤µ¤ó¤Î¥ª¥Ú¥ì¡¼¥¿¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Linq ¤Î¤è¤¦¤Ë¥á¥½¥Ã¥É¡¦¥Á¥§¡¼¥ó¤µ¤»¤ÆÊ£¿ô¤Î¥ª¥Ú¥ì¡¼¥¿¤ò¶´¤ß¤³¤ó¤Ç½èÍý¤Î¥í¥¸¥Ã¥¯¤ò¹½ÃۤǤ¤Þ¤¹¡£
¡¡¥ª¥Ú¥ì¡¼¥¿¤Î¼ïÎà¤Ë¤Ä¤¤¤Æ¤Ï¡¢²¼µ¤Î¥µ¥¤¥È¤Ë¾Ü¤·¤¯¤Þ¤È¤á¤é¤ì¤Æ¤¤¤ë¤Î¤Ç»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¡ã»²¹Í¥µ¥¤¥È¡ä
Qiita @toRisouP(³ô¼°²ñ¼Ò ¥Ð¡¼¥Á¥ã¥ë¥¥ã¥¹¥È)
UniRx ¥ª¥Ú¥ì¡¼¥¿°ìÍ÷
¡¡µË¡£²(DOTween)¤Î View ¥¯¥é¥¹¤È¡¢µË¡£³(MV(R)P ¥Ñ¥¿¡¼¥ó) Presenter ¥¯¥é¥¹¤Î½èÍý¤ò½ñ¤´¹¤¨¤ë¤³¤È¤Ç¼ÂÁõ½ÐÍè¤Þ¤¹¡£
¡ãView ¥¯¥é¥¹¡ä
[SerializeField]
private Text txtTime;
[SeriallizeField]
private Ease ease;
private float duration = 1.0f;
public void UpdateDisplayTime(int oldTime, int newTime){
txtTime.DOCounter(oldTime, newTime, duration).SetEase(ease);
}
¡ãPresenter ¥¯¥é¥¹¡ä
¡¡using UniRx;
[SerializeField]
private Model model;
[SerializeField]
private View view;
void Start() {
model.Time
.Zip(model.Time.Skip(1), (oldTime, newTime) => (oldTime, newTime)) // ¥¿¥×¥ë·¿¤òÍøÍѤ·¤Þ¤¹
.Subscribe(x => view.UpdateDisplayTime(x.oldTime, x.newTime))
.AddTo();
}
¡¡°Ê¾å¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡
¡¡Â¾¤Ë¤â¼ÂÁõÊýË¡¤Ï¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¿§¡¹¤Ê¤â¤Î¤òÄ´¤Ù¤Æ»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£