LoginSignup
8
5

More than 5 years have passed since last update.

UniRxでトグルのオン・オフの変更に連動し、ボタンの有効・無効を変化させる

Last updated at Posted at 2015-03-28

この投稿ではUnityにおいて、トグルのオン・オフの変更に連動し、ボタンの有効・無効を変化させるコードをUniRxで簡潔に記述する方法とそのポイントを紹介します。

コード

ButtonEnabling.cs
using UnityEngine;
using UnityEngine.UI;
using UniRx;

public class ButtonEnabling : MonoBehaviour
{
    [SerializeField]
    private Toggle toggle;

    [SerializeField]
    private Button button;

    void Awake()
    {
        toggle.OnValueChangedAsObservable().SubscribeToInteractable(button);
    }
}

ポイント1

onValueChanged.AsObservable()

でなくて、

OnValueChangedAsObservable()

を使う。

onValueChanged.AsObservable()を使って、もし初期値が

  • トグルがオフだけど、ボタンが有効
  • トグルがオンだけど、ボタンが無効

のどちらかであった場合(言い換えると初期の論理状態が正しくない場合)、一度トグルを押すまで正しい状態にならない。

ポイント2

SubscribeToInteractableを使う。(SubscribeToInteractableメソッド(github))

toggle.OnValueChangedAsObservable().Subscribe(isInteractable => button.interactable = isInteractable);

は、

toggle.OnValueChangedAsObservable().SubscribeToInteractable(button);

って短くかける。

Unityエディタ上でノーコーディングでもできる

UnityEvent+Unityのエディタ拡張の機能により、コードなしでも設定できます。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5