ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2024ǯ10·î23Æü(¿å) 09:03:51ÍúÎò
¡¡ÆÃ¤ËÈ󯱴ü½èÍý¤Ë¤Ê¤ì¤Ê¤¤¤¦¤Á¤Ï¡¢¥¨¥é¡¼¤Î¸¶°ø¤È¤·¤Æ ReactiveProperty ¤¬ºîÍѤ·¤Æ¤¤¤ëÉôʬ¤¬¸«¤¨¤Ë¤¯¤¯¡¢¥¨¥é¡¼²ò·è¤¬¤Ç¤¤Ë¤¯¤¤¤È¤¤¤¦Éôʬ¤â¤¢¤ê¤Þ¤¹¡£
Ê£¿ô¤Î¿Í¤¬·È¤ï¤ë¥×¥í¥¸¥§¥¯¥È¤È¤Ê¤ë¤È¡¢¤Ê¤ª¤µ¤éÈÑ»¨¤Ë¤Ê¤ê¤¬¤Á¤Ç¤¹¡£
¤Þ¤¿¥ª¥Ö¥¶¡¼¥Ð¡¼¥Ñ¥¿¡¼¥ó¤ÎÍý²ò¤¬¿¼¤Þ¤é¤Ê¤¤¤È¡¢¤É¤Î¥¯¥é¥¹¤Ç¹ØÆÉ¤µ¤ì¤Æ¤¤¤Æ¡¢¤É¤Î¥¿¥¤¥ß¥ó¥°¤Çư¤¤¤Æ¤¤¤ë¤Î¤«¤Ê¤É¡¢Ä̾ï¤Î½èÍý¤ËÈæ¤Ù¤Æ¤ï¤«¤ê¤¯¤¤µóư¤â¿¤¤¤Ç¤¹¡£
¡¡½èÍý¤ÎÆâÍÆ¤ò¤·¤Ã¤«¤ê¤ÈÍý²ò¤·¤¿¾å¤Ç¡¢Å¬ÀÚ¤ÊÍÑË¡¤ÇÍøÍѤ·¤Æ¤¤¤¯¤³¤È¤¬µá¤á¤é¤ì¤Þ¤¹¡£
¡¡ReactiveProperty ¤Ï¡¢ÃÍ·¿¤Þ¤¿¤Ï»²¾È·¿¤Î¥Ç¡¼¥¿¤ò¥é¥Ã¥×¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¶ñÂÎŪ¤Ë¤Ï¡¢¥¸¥§¥Í¥ê¥Ã¥¯¤ÊÀ¼Á¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¤É¤ó¤Ê·¿¤Ç¤â¥é¥Ã¥×¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢int ¤ä float ¤Ê¤É¤ÎÃÍ·¿¤À¤±¤Ç¤Ê¤¯¡¢string ¤ä object¡¢ GameObject¡¢¼«ºî¥¯¥é¥¹¤Ê¤É¤Î»²¾È·¿¤â¥é¥Ã¥×¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡¡Î㤨¤Ð¡¢ReactiveProperty<int>¤ÏÃÍ·¿¤Ç¤¢¤ë int ·¿¤ÎÃͤò¥é¥Ã¥×¤·¤Þ¤¹¤¬¡¢
ReactiveProperty<string>¤Ï»²¾È·¿¤Ç¤¢¤ë string ·¿¤ÎÃͤò¥é¥Ã¥×¤·¤Þ¤¹¡£
¤½¤·¤Æ¡¢¤½¤ì¤¾¤ì¤Î ReactiveProperty ¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¡¢¤½¤Î·¿¤Ë±þ¤¸¤¿Ãͤò»ý¤Á¤Þ¤¹¡£
¡¡ReactiveProperty¤¬ÃÍ·¿¤ò¥é¥Ã¥×¤¹¤ë¾ì¹ç¡¢¤½¤ÎÃͤÏnull¤Ë¤Ê¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
°ìÊý¡¢»²¾È·¿¤ò¥é¥Ã¥×¤¹¤ë¾ì¹ç¡¢¤½¤ÎÃͤÏnull¤Ë¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
¡¡C# ¤ÎÃÍ·¿¡Êint¡¢float¡¢bool¤Ê¤É¡Ë¤òÀë¸À¤·¤¿ ReactiveProperty ¤Î¾ì¹ç¡¢Ä̾ï¤Ï null ¥Á¥§¥Ã¥¯¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¡£
ÃÍ·¿¤Ï null ¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¤¿¤á¤Ç¤¹¡£(null µöÍÆ·¿¤Ç¤¢¤ë¾ì¹ç¤ò½ü¤¤Þ¤¹)
¡¡¤Ç¤¹¤¬¡¢»²¾È·¿¤Î¥×¥ê¥ß¥Æ¥£¥Ö·¿(string¡¢object ¤Ê¤É)¤Ç¤¢¤Ã¤¿¤ê¡¢GameObject ¤ä¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î·¿¡¢¼«ºî¥¯¥é¥¹¤Ê¤É¤òÀë¸À¤·¤¿ ReactiveProperty ¤Î¾ì¹ç¤Ë¤Ï¡¢null ¥Á¥§¥Ã¥¯¤¬É¬Íפˤʤê¤Þ¤¹¡£
»²¾È·¿¤ÎÊÑ¿ô¤Ï null ¤Ë¤Ê¤ë²ÄǽÀ¤¬¤¢¤ë¤¿¤á¤Ç¤¹¡£
¡¡Î㤨¤Ð¡¢ReactiveProperty<Rigidbody>¤Î¤è¤¦¤Ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î·¿¤Î¥¯¥é¥¹¤òÀë¸À¤·¤¿ ReactiveProperty ¤Î¾ì¹ç¡¢
Rigidbody ¤¬ null ¤Ç¤¢¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ReactiveProperty¤Ï»²¾È·¿¤Î¥Ç¡¼¥¿¤ò¥é¥Ã¥×¤·¤Æ¤¤¤Þ¤¹¤¬¡¢¼«ÂΤ¬ null ¤Ç¤¢¤ë¤³¤È¤â¤¢¤ë¤¿¤á¤Ç¤¹¡£
¡¡Ä̾ï¤ÎÊÑ¿ô¤È ReactiveProperty¤Î°ã¤¤¤Ï¡¢ReactiveProperty¤Ï¥¯¥é¥¹¤Ç¤¢¤ê¡¢¤½¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬ null ¤Ç¤¢¤ë²ÄǽÀ¤¬¤¢¤ëÅÀ¤Ç¤¹¡£
¤½¤Î¾ì¹ç¡¢ReactiveProperty¤Înull¥Á¥§¥Ã¥¯¤Ï¼¡¤Î¤è¤¦¤Ë¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
public class Test_A {
public int count;
}
public class Test_B {
public ReactiveProperty<Test_A> TestProperty = new();
void Start() {
if (TestProperty == null || TestProperty .Value == null) {
return;
}
}
}
¡¡¤³¤Î¤è¤¦¤Ë¡¢TestProperty ¤¬ null ¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤·¡¢
¤½¤Î¸å¤Ë TestProperty.Value ¤¬ null ¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢Àµ¤·¤¯ null ¥Á¥§¥Ã¥¯¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡¡UniRx ¤Î½èÍý¤Ï AddTo ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¹ØÆÉÄä»ß¤ò¹Ô¤¦¥±¡¼¥¹¤¬¤¢¤ê¤Þ¤¹¡£
¤¿¤À¤·¡¢¥ª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ë¤Ê¤É¤òÊ»ÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢AddTo ¤Çɳ¤Å¤¤¤Æ¤¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¤¬Ç˲õ¤µ¤ì¤Ê¤¤¤¿¤á¡¢¹ØÆÉÄä»ß¤¬¹Ô¤ï¤ì¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢ÊÌÅÓ¡¢Dispose ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡¡¤½¤ÎºÝ¡¢CompositeDisposable ¤òÍøÍѤ·¤ÆÊ£¿ô¤Î UniRx ¤ä ReactiveProperty ¤ò´Æ»ë¤·¤Æ¤¤¤ë¾ì¹ç¡¢
CompositeDisposable ¤Ï°ìÅÙ Dispose ¤¹¤ë¤ÈƱ¤¸¥¹¥È¥ê¡¼¥à¤Ç¤Ï¹ØÆÉ¤¬ºÆ³«¤µ¤ì¤Þ¤»¤ó¡£
¡¡¹ØÆÉ½èÍý¤òºÆ³«¤µ¤»¤ëͽÄ꤬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢Clear ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¹ØÆÉÄä»ß¤¹¤ë¤«¡¢Ã±ÂΤÇÄä»ß¤Ç¤¤ë¤è¤¦¤Ë IDisposable ·¿¤òÍøÍѤ·¤Þ¤·¤ç¤¦¡£
¤¢¤ë¤¤¤Ï¿·¤·¤¤¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®¤·¤ÆÍøÍѤ·¤Æ¤¤¤¯ÊýË¡¤òºÎÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥µ¥ó¥×¥ë¥³¡¼¥É¤Ç¤¹¡£
using UniRx;
using UnityEngine;
/// <summary>
/// ¥é¥¤¥Õ´ÉÍýÍÑ´ðÄ쥯¥é¥¹
/// </summary>
public class LifeBase {
public ReactiveProperty<int> Hp = new();
protected int maxHp;
protected readonly CompositeDisposable disposables = new();
public CompositeDisposable Disposables { get => disposables; set => disposables.Add(value); }
protected void Dispose() {
// Dispose ¤Ç¤Ï¤Ê¤¯ Clear ¤Ç¹ØÆÉ¤òÄä»ß¤¹¤ë
disposables.Clear();
¡¡¡¡¡¡¡¡// ¤¢¤ë¤¤¤Ï¿·¤·¤¤¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®¤¹¤ë
¡¡¡¡¡¡¡¡disposables = new();
}
protected void OnDestroy() {
Dispose();
}
}
¡¡Hp ¤ò¹ØÆÉ¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢²¼µ¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£
private LifeBase myLife;
// Hp ¤Î¹ØÆÉ
myLife.Hp
.Subscribe(hp => Debug.Log($"hp : {hp}")
¡¡¡¡.AddTo(myLife.Disposables);
¡¡AddTo ¤Î°ú¿ô¤ËÀè¤Û¤ÉºîÀ®¤·¤¿¥¯¥é¥¹Æâ¤Î CompositeDisposable ¤Î¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤹ¤ë¤³¤È¤Ç¹ØÆÉÄä»ß¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡¡ReactiveProperty ¤ËÂФ·¤ÆÂåÆþ½èÍý¤ò¹Ô¤¦¾ì¹ç¡¢±¦Êդ˺¸ÊÕ¤ÈÆ±¤¸ ReactiveProperty ¤òÍøÍѤ·¤Æ¤·¤Þ¤¦¤È¡¢2²óʬ¤Î¹ØÆÉ½èÍý¤¬Æ°¤¤Þ¤¹¡£
public ReactiveProperty<int> Hp = new();
void Start() {
Hp.Value = 10;
Hp.Value = Hp.Value + 10;
}
¡¡¤½¤Î¤¿¤á Mathf ¥¯¥é¥¹¤Ê¤É¤Ë ReactiveProperty ¤ò°ì½ï¤ËÍøÍѤ¹¤ë¾ì¹ç¡¢¤½¤Î°ú¿ôÆâ¤Ë ReactiveProperty ¤òÍøÍѤ¹¤ë¤È¹ØÆÉ½èÍý¤¬Ê£¿ô²óư¤¤Þ¤¹¡£
¡¡Î㤨¤Ð Mathf.Clamp ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¡¢ReactiveProperty ¤òÀ©¸ÂÃÍÆâ¤Ë¼ý¤á¤¿¤¤¾ì¹ç¡¢Clamp ¥á¥½¥Ã¥ÉÆâ¤ÇÂåÆþ½èÍý¤ò¶´¤ó¤Ç¤·¤Þ¤¦¤È
ReactiveProperty ¤Î·×»»½èÍý¤Î»þÅÀ¤Ç1²ó¹ØÆÉ¤µ¤ì¡¢¤µ¤é¤Ë¤½¤ÎÃͤ¬ Clamp ¤ÎÀ©¸ÂÃͤòͤ¨¤¿¾ì¹ç¤Ë¤Ï¿ôÃͤ¬ºÆÅÙ¹¹¿·¤µ¤ì¤ë¤¿¤á¡¢
¤â¤¦1²ó¹ØÆÉ½èÍý¤¬Æ°¤¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¡¢Í½´ü¤·¤Æ¤¤¤Ê¤¤ÃÍ¤Ç¤Î¹ØÆÉ½èÍý¤¬¹Ô¤ï¤ì¤ë²ÄǽÀ¤¬¹â¤¤¤¿¤á¡¢
¡°ìÅÙ¡¢¥í¡¼¥«¥ëÊÑ¿ô¤òºîÀ®¤·¡¢¤½¤ÎÃͤò Mathf ¥¯¥é¥¹¤ÇÀ©¸Â¤·¤Æ¤«¤é ReactiveProperty ¤ËÂåÆþ¤¹¤ë¤è¤¦¤Ë¤¹¤ë
¢¤¢¤ë¤¤¤Ï¡¢Clamp Æâ¤Ç¤Ï ReactiveProperty ¤ËÂåÆþ½èÍý¤·¤Ê¤¤(¡Ü¡á¤Ç½èÍý¤·¤Ê¤¤)¤³¤È¤Ç°ÂÁ´¤Ë±¿ÍѤǤ¤Þ¤¹¡£
using UniRx;
using UnityEngine;
/// <summary>
/// ¥é¥¤¥Õ´ÉÍýÍÑ´ðÄ쥯¥é¥¹
/// </summary>
public class LifeBase : MonoBehaviour {
public ReactiveProperty<int> Hp = new();
protected int maxHp;
/// <summary>
/// ½é´üÀßÄê
/// </summary>
/// <param name="initHp"></param>
protected virtual void SetUpLife(int initHp) {
Hp.Value = initHp;
maxHp = initHp;
}
/// <summary>
/// Hp ·×»»½èÍý
/// À¸Â¸È½ÄêÉÕ
/// </summary>
/// <param name="amount"></param>
/// <returns></returns>
public virtual bool CalcLife(int amount, int effectIndex, string seType) {
¡¡¡¡¡¡¡¡// ¡¡Ý£±¡¡¥í¡¼¥«¥ëÊÑ¿ô¤Ë ReactiveProperty ¤òÂåÆþ¤·¡¢Ä¾ÀÜ·×»»¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë
int hp = Hp.Value;
// ¡¡Ý£²¡¡hp ¤Î·×»»¤ò Clamp ¤ÇÀ©¸Â¤¹¤ë¤³¤È¤Ç¡¢Value ¤Ø¤ÎÂåÆþ¤ò1²ó¤À¤±¤Ë¤¹¤ë
Hp.Value = Mathf.Clamp(hp += amount, 0, maxHp);
// ¢¤¢¤ë¤¤¤Ï¡¢¡Ü ¤Î¤ß¤Ç²Ã»»¤¹¤ë(ÂåÆþ½èÍý¤ò¶´¤Þ¤Ê¤¤)
Hp.Value = Mathf.Clamp(Hp.Value + amount, 0, maxHp);
return Hp.Value > 0;
}
}
¡¡²¼µ¤Î¤è¤¦¤Ë½èÍý¤ò½ñ¤¯¤È¡¢Clamp ¥á¥½¥Ã¥ÉÆâ¤Ç ReactiveProperty ¤Î¹ØÆÉ½èÍý¤¬2²ó¤¬Æ°¤¯²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
¡¡
public virtual bool CalcLife(int amount, int effectIndex, string seType) {
¡¡¡¡¡¡¡¡// ReactiveProperty ¤Î·×»»¤òľÀÜ Clamp Æâ¤Ç¹Ô¤¦¤È¡¢Âè1°ú¿ô¤Î·×»»»þ¤Ë1²ó¡¢Clamp ¤ÎÀ©¸Â»þ¤Ë1²ó¡¢¹ØÆÉ½èÍý¤¬Æ°¤¯²ÄǽÀ¤¬¤¢¤ë
Hp.Value = Mathf.Clamp(Hp.Value += amount, 0, maxHp);
return Hp.Value > 0;
}
¡¡¤³¤ì¤òÈò¤±¤ë¤è¤¦¤Ë¥³¡¼¥Ç¥£¥ó¥°¤·¤Þ¤·¤ç¤¦¡£
¡¡ReactiveProperty<T>¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¡ÖHot Observable¡×¤È¤·¤ÆÆ°ºî¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Subscribe¤ò¸Æ¤Ó½Ð¤·¤¿»þÅÀ(ÀßÄꤷ¤¿»þÅÀ)¤Ç¡¢¸½ºß¤ÎÃͤ¬¹ØÆÉ¤µ¤ì¤Þ¤¹¡£
ReactiveProperty<T>¤Ï½é´üÃͤò»ý¤Ã¤Æ¤ª¤ê¡¢¥µ¥Ö¥¹¥¯¥ê¥×¥·¥ç¥ó¤¬ÀßÄꤵ¤ì¤ë¤È¨ºÂ¤Ë¤½¤Î½é´üÃͤò¹ØÆÉ¼Ô¤ËÄÌÃΤ·¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢¡ÖCold ¾õÂ֡פǥ¹¥¿¡¼¥È¤¹¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¡¡³Îǧ¤Î¤¿¤á¡¢°Ê²¼¤Î¥³¡¼¥É¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£
using UnityEngine;
using UniRx;
public class ReactiveExample : MonoBehaviour
{
// ReactiveProperty¤Î½é´ü²½
private ReactiveProperty<long> remainGold = new ReactiveProperty<long>();
private void Start()
{
// ReactiveProperty¤ÎÃͤËÂФ·¤Æ¹ØÆÉ
remainGold.Subscribe(value => Debug.Log("Value changed to: " + value));
}
private void Update()
{
// ¥¹¥Ú¡¼¥¹¥¡¼¤¬²¡¤µ¤ì¤¿¤éReactiveProperty¤ÎÃͤòÊѹ¹
if (Input.GetKeyDown(KeyCode.Space))
{
remainGold.Value += 10;
}
}
}
¡¡¾åµ¤Î¥³¡¼¥É¤Ç¤Ï¡¢Start ¥á¥½¥Ã¥É¤Ç¹ØÆÉ¤òÀßÄꤷ¤Æ¤¤¤Þ¤¹¤¬¡¢Subscribe¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤¿Ä¾¸å¤Ë Console ¥Ó¥å¡¼¤Ë¡ÖValue changed to: 0¡×¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£
¤³¤ì¤Ï¡¢ReactiveProperty<long>¤¬½é´üÃÍ 0 ¤ò»ý¤Ã¤Æ¤¤¤ë¤¿¤á¡¢¤½¤Î½é´üÃͤ¬Â¨ºÂ¤Ë¹ØÆÉ¼Ô¤ËÄÌÃΤµ¤ì¤ë¤¿¤á¤Ç¤¹¡£
¡¡ Update¥á¥½¥Ã¥É¤Ç¥¹¥Ú¡¼¥¹¥¡¼¤¬²¡¤µ¤ì¤¿¤éremainGold¤ÎÃͤò10¤º¤ÄÁý²Ã¤µ¤»¤Þ¤¹¡£
¤½¤Î¥¿¥¤¥ß¥ó¥°¤Ç Console ¥Ó¥å¡¼¤Ë ¡ÖValue changed to: 10¡×¡ÖValue changed to: 20¡×¤Î¤è¤¦¤Ë¡¢1²ó¤º¤Ä¥í¥°¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£
¡¡¤Þ¤È¤á¤ë¤È¡¢ReactiveProperty<T>¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¡ÖHot Observable¡×¤È¤·¤ÆÆ°ºî¤·¡¢Subscribe¤ò¸Æ¤Ó½Ð¤·¤¿»þÅÀ¤Ç¸½ºß¤ÎÃͤò¨ºÂ¤Ë¹ØÆÉ¼Ô¤ËÄÌÃΤ·¤Þ¤¹¡£
¤½¤·¤Æ¹ØÆÉ½èÍý¤¬½é´üÃͤÇ1²ó¹Ô¤ï¤ì¤Þ¤¹¡£
¡¡using UniRx; ¤ÈÀë¸À¤¹¤ë¤³¤È¤Ç ReactiveProperty<T> ¤ä¡¢¤½¤ì°Ê³°¤Î¥é¥¤¥Ö¥é¥ê¤Îµ¡Ç½¤òÍøÍѤǤ¤Þ¤¹¡£
¡¡Unity ¤Ç¤Ï¤Ê¤¤ C# ¤Î¾ì¹ç¡¢using Reactive.Bindings; ¤ÎÀë¸À¤ò¹Ô¤¤¤Þ¤¹¡£
ReactiveProperty<T>¤ò´Þ¤àReactive.Bindings¥é¥¤¥Ö¥é¥êÁ´ÂΤò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤¿¤á¤ÎÀë¸À¤Ç¤¹¡£
using Reactive.Bindings; ¤òÀë¸À¤¹¤ë¤³¤È¤Ç¡¢²¼µ¤Îµ¡Ç½¤¬ÍøÍѲÄǽ¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î̾Á°¶õ´Ö¤Ë¤ÏReactiveProperty<T>°Ê³°¤Ë¤â¡¢°Ê²¼¤Î¤è¤¦¤Ê¤µ¤Þ¤¶¤Þ¤Ê¥¯¥é¥¹¤ä¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡§
ReactiveCommand¡§¥³¥Þ¥ó¥É¤Î¥ê¥¢¥¯¥Æ¥£¥Ö½èÍý¤ò¥µ¥Ý¡¼¥È¡£ ReadOnlyReactiveProperty<T>¡§ÆÉ¤ß¼è¤êÀìÍѤΥꥢ¥¯¥Æ¥£¥Ö¥×¥í¥Ñ¥Æ¥£¡£ ReactiveCollection<T>¡§¥³¥ì¥¯¥·¥ç¥ó¤¬Êѹ¹¤µ¤ì¤¿¤È¤¤ËÄÌÃΤò¼õ¤±¤ë¤¿¤á¤Î¥¯¥é¥¹¡£ ³Æ¼ï³ÈÄ¥¥á¥½¥Ã¥É¡§Observable¤ÎÊÑ´¹¤äÁàºî¤Ë»ÈÍѤ¹¤ë¤â¤Î¤Ê¤É¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°




¥³¥á¥ó¥È¤ò¤«¤¯