Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡¡UniRx ¤ò³èÍѤ·¤¿¥Þ¥¦¥¹Ä¹²¡¤·µ¡Ç½¤Î¼ÂÁõÎã¤Ç¤¹¡£



¥µ¥ó¥×¥ë¥³¡¼¥É



using System;
using UniRx;
using UniRx.Triggers;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

public class Variable : MonoBehaviour
{
    [SerializeField, Tooltip("·×»»µ¡¤ËÊÑ¿ôÄɲåܥ¿¥ó")] private Button btnVariable;

    [SerializeField, Tooltip("ÊÑ¿ô̾ɽ¼¨¥Æ¥­¥¹¥È")] private Text textVariableName;
    [SerializeField, Tooltip("ÊÑ¿ô¤ÎÃÍɽ¼¨¥Æ¥­¥¹¥È")] private Text textVriableValue;

    public ReactiveProperty<string> variableName { get; set; } = new();
    public ReactiveProperty<int> VariableValue { get; set; } = new();


    void Start() {
¡¡¡¡¡¡¡¡// ¥Ç¥Ð¥Ã¥°ÍÑ
        GenerateSetup("Sample", 0);
    }

    public void GenerateSetup(string viewText, int index, UnityAction<int> buttonActionAddCalcView = null)
    {
        btnVariable.OnClickAsObservable()
            .ThrottleFirst(System.TimeSpan.FromSeconds(0.5f))
            .Subscribe(_ =>
            {
                buttonActionAddCalcView?.Invoke(index);
            })
            .AddTo(this);

¡¡¡¡¡¡¡¡// UniRx ¤òÍøÍѤ·¤¿¥Þ¥¦¥¹¤ÎĹ²¡¤·½èÍý
¡¡¡¡¡¡¡¡// OnPointerDown¤òtrue¤ËÊÑ´¹
        btnVariable.OnPointerDownAsObservable().Select(_ => true)
       
       ¡¡¡¡// OnPointerUp¤òfalse¤ËÊÑ´¹
           // OnPointerDown¤ÈOnPointerUp¤ò1¤Ä¤Î¥¹¥È¥ê¡¼¥à¤Ë¹çÀ®
           // ¤³¤Î¸å¤Ë¤Ï²¡¤·¤¿»þ¤Ëtrue¤¬¡¢Î¥¤·¤¿»þ¤Ëfalse¤¬Î®¤ì¤ë¤è¤¦¤Ë¤Ê¤ë
       ¡¡¡¡.Merge(btnVariable.OnPointerUpAsObservable().Select(_ => false))

           // 1Éôֿ·¤·¤¤Ãͤ¬Íè¤Ê¤«¤Ã¤¿¤éºÇ¸å¤ËÍ褿Ãͤòή¤¹
           .Throttle(TimeSpan.FromSeconds(0.5f))

           // true¤À¤±¤òή¤¹
           .Where(b => b)

           // ¤³¤Îbool¤ÏÍøÍѤ·¤Ê¤¤ÃͤʤΤǡ¢ÄÌÃÎȯ¹Ô¤Î¤ß¤ò¹Ô¤Ã¤Æ¤¤¤ë¤³¤È¤òÌÀ³Î¤Ë¤¹¤ë¤¿¤á¡¢Unit¤ËÊÑ´¹¤¹¤ë
       ¡¡¡¡.AsUnitObservable()

¡¡¡¡       // ¾åµ­¤Î½èÍý¤Ë¤è¤ê¡¢ºÇ½ªÅª¤Ë¥Þ¥¦¥¹¤ÎĹ²¡¤·¤ò¹ØÆɤ¹¤ë
¡¡¡¡       .Subscribe(_ =>
    ¡¡¡¡   {
        ¡¡¡¡   // TODO Ĺ²¡¤·»þ¤Î½èÍý¤ò¼ÂÁõ

       ¡¡¡¡})
       ¡¡¡¡.AddTo(this);

        variableName
            .Subscribe(message =>
            {
                SetVariableName(message);
            })
            .AddTo(this);

        variableName.Value = viewText;

        VariableValue.Subscribe(x =>
            {
                SetVariableValue(x.ToString());
            })
            .AddTo(this);

        VariableValue.Value = 0;
    }

    public void SetVariableName(string value)
    {
        textVariableName.text = value;
    }

    public void SetVariableValue(string value)
    {
        textVriableValue.text = value;
    }
}


²òÀâ


¡¡btnVariable¤ÎOnPointerDown¤ÈOnPointerUp¤ò1¤Ä¤Î¥¹¥È¥ê¡¼¥à¤Ë¹çÀ®¤·¤Æ¡¢
¤½¤Î¸å¤ËTrue¤Î¤È¤­¤À¤±¤ò¥Õ¥£¥ë¥¿¥ê¥ó¥°¤·¡¢ºÇ½ªÅª¤ËUnit¤ËÊÑ´¹¤·¤Æ¤«¤é¹ØÆɤ·¤Æ¤¤¤Þ¤¹¡£

¡¡¡¡¡¡¡¡// UniRx ¤òÍøÍѤ·¤¿¥Þ¥¦¥¹¤ÎĹ²¡¤·½èÍý
¡¡¡¡¡¡¡¡// OnPointerDown¤òtrue¤ËÊÑ´¹
        btnVariable.OnPointerDownAsObservable().Select(_ => true)
       
       ¡¡¡¡// OnPointerUp¤òfalse¤ËÊÑ´¹
           // OnPointerDown¤ÈOnPointerUp¤ò1¤Ä¤Î¥¹¥È¥ê¡¼¥à¤Ë¹çÀ®
           // ¤³¤Î¸å¤Ë¤Ï²¡¤·¤¿»þ¤Ëtrue¤¬¡¢Î¥¤·¤¿»þ¤Ëfalse¤¬Î®¤ì¤ë¤è¤¦¤Ë¤Ê¤ë
       ¡¡¡¡.Merge(btnVariable.OnPointerUpAsObservable().Select(_ => false))

           // 1Éôֿ·¤·¤¤Ãͤ¬Íè¤Ê¤«¤Ã¤¿¤éºÇ¸å¤ËÍ褿Ãͤòή¤¹
           .Throttle(TimeSpan.FromSeconds(0.5f))

           // true¤À¤±¤òή¤¹
           .Where(b => b)

           // ¤³¤Îbool¤ÏÍøÍѤ·¤Ê¤¤ÃͤʤΤǡ¢ÄÌÃÎȯ¹Ô¤Î¤ß¤ò¹Ô¤Ã¤Æ¤¤¤ë¤³¤È¤òÌÀ³Î¤Ë¤¹¤ë¤¿¤á¡¢Unit¤ËÊÑ´¹¤¹¤ë
       ¡¡¡¡.AsUnitObservable()

¡¡¡¡       // ¾åµ­¤Î½èÍý¤Ë¤è¤ê¡¢ºÇ½ªÅª¤Ë¥Þ¥¦¥¹¤ÎĹ²¡¤·¤ò¹ØÆɤ¹¤ë
¡¡¡¡       .Subscribe(_ =>
    ¡¡¡¡   {
        ¡¡¡¡   // TODO Ĺ²¡¤·»þ¤Î½èÍý¤ò¼ÂÁõ

       ¡¡¡¡})
       ¡¡¡¡.AddTo(this);

¡¡¶ñÂÎŪ¤Ê½èÍý¤Îή¤ì¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£

¡¡OnPointerDownAsObservable()¤ÈOnPointerUpAsObservable()¤òMerge¤·¤Æ1¤Ä¤Î¥¹¥È¥ê¡¼¥à¤Ë·ë¹ç¤·¤Þ¤¹¡£

¡¡¹çÀ®¤·¤¿¥¹¥È¥ê¡¼¥à¤Î³ÆÍ×ÁǤËÂФ·¤Æ¡¢Select(_ => true)¤ÈSelect(_ => false)¤ò»È¤Ã¤Æ¡¢¤½¤ì¤¾¤ìTrue¤ÈFalse¤ËÊÑ´¹¤·¤Þ¤¹¡£

¡¡ÊÑ´¹¤·¤¿¥¹¥È¥ê¡¼¥à¤òThrottle¤Ç0.5É䴤ȤËÀ©¸æ¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢Ä¹²¡¤·Ãæ¤Ç¤â0.5É䴤ȤË1²ó¤À¤±¥¤¥Ù¥ó¥È¤¬Î®¤ì¤Þ¤¹¡£

¡¡ºÇ¸å¤Ë¡¢True¤Î¤È¤­¤À¤±¤ò¥Õ¥£¥ë¥¿¥ê¥ó¥°¤·¤Æ¡¢AsUnitObservable()¤ÇUnit¤ËÊÑ´¹¤·¤Þ¤¹¡£

¡¡ºÇ½ªÅª¤Ë¡¢Ä¹²¡¤·»þ¤Ë¤Ï1É䴤ȤËUnit¤¬Î®¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¡¢¤½¤Î¥¤¥Ù¥ó¥È¤òSubscribe¤·¤Æ¼ÂÁõ¤·¤¿½èÍý¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
¤³¤Î½èÍý¤Ë¤è¤ê¡¢btnVariable¤¬Ä¹²¡¤·¡Ê¤Þ¤¿¤Ï¥¿¥Ã¥×¡Ë¤µ¤ì¤¿¾õÂÖ¤ò¸¡ÃΤ·¡¢¤½¤ÎºÝ¤Ë¥¤¥Ù¥ó¥È½èÍý¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


¡ãAsUnitObservable() ¥ª¥Ú¥ì¡¼¥¿¡ä


¡¡AsUnitObservable() ¥ª¥Ú¥ì¡¼¥¿¤Ï¡¢Observable¤Î³ÆÍ×ÁǤËÂФ·¤Æñ¤Ê¤ë true ¤Ç¤Ï¤Ê¤¯¡¢ Unit ¤òή¤¹¤è¤¦¤ËÊÑ´¹¤¹¤ë¤â¤Î¤Ç¤¹¡£
¤³¤ì¤Ï¡¢Observable¤¬ÆÃÄê¤ÎÃͤÎή¤ì¤Ç¤Ï¤Ê¤¯¡¢Ã±¤Ê¤ë¥¤¥Ù¥ó¥È¤ÎȯÀ¸¤òɽ¤¹¾ì¹ç¤Ë»È¤ï¤ì¤Þ¤¹¡£

¡¡Î㤨¤Ð¡¢ BtnVariable ¤¬Ä¹²¡¤·¡Ê¤Þ¤¿¤Ï¥¿¥Ã¥×¡Ë¤µ¤ì¤¿¤³¤È¤òÃΤꤿ¤¤¾ì¹ç¡¢¤½¤Î¾ðÊó¤À¤±¤ò»ý¤Ä true ¤òή¤¹¤Î¤Ç¤Ï¤Ê¤¯¡¢
Unit ¤òή¤¹¤³¤È¤Ç¡¢ÆäËÃͤ˰ÕÌ£¤¬¤Ê¤¯¡¢Ã±¤Ë¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¤³¤È¤òɽ¸½¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¡¡¼ÂºÝ¤Ë¤Ï¡¢¤³¤Î¾ì¹ç¡¢ AsUnitObservable() ¤ò¶´¤Þ¤Ê¤¯¤Æ¤âÆ°ºî¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
¤·¤«¤·¡¢¥¤¥Ù¥ó¥È¤ÎȯÀ¸¤òɽ¤¹¾ìÌ̤Ǥϡ¢ Unit ¤¬»ÈÍѤµ¤ì¤ë¤³¤È¤¬°ìÈÌŪ¤Ç¤¢¤ê¡¢¥³¡¼¥É¤Î°Õ¿Þ¤òÌÀ¼¨Åª¤Ë¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥³¡¼¥É¤ò¸«¤ë¿Í¤¬Ã±¤Ê¤ë true ¤ÎÂå¤ï¤ê¤Ë Unit ¤ò»È¤Ã¤Æ¤¤¤ë¤³¤È¤òÍý²ò¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

¡¡¤Þ¤¿¡¢ÆäËÃͤ˰ÕÌ£¤¬¤Ê¤¤¾ì¹ç¤ä¡¢¤½¤ÎÃͤò̵»ë¤¹¤ë¾ì¹ç¤Ë¤â Unit ¤¬»È¤ï¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î¤è¤¦¤Êʸ̮¤Ç .AsUnitObservable() ¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢¥³¡¼¥É¤Î°Õ¿Þ¤¬ÌÀ³Î¤Ë¤Ê¤ê¡¢Â¾¤Î³«È¯¼Ô¤ä¼«Ê¬¼«¿È¤¬¸å¤ÇÍý²ò¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

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


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹