🔀

【Unity】UIのON/OFFなどを柔軟にコントロールできるコンポーネント

に公開

ソースコード

インスペクタでbool値をUIの何に割り当てるかを設定できるので、ソースの変更なしに様々なパターンに対応ができるようになります。

  • GameObject.SetActive:オブジェクト丸ごとON/OFF
  • Image.enabled:画像単体の表示ON/OFF
  • Button.interactable:ボタンの入力可否をON/OFF

また、ON/OFFを反転しているバージョンも用意しているので、「無効な時に有効にしたいもの」のようなパターンにも対応ができます。
(例:ロックされていることを示す鍵マークとか)

True/Falseで関数の呼び分けもできるので、簡易的なアニメーションの制御も可能です。

クラス内に直接シリアライズして使える版

TestBehaviour.cs
public class TestBehaviour : MonoBehaviour
{
    [SerializeField]
    private SerializedBooleanDispatcher _visibleBinding;

    public void SetVisible(bool visible)
    {
        _visibleBinding.Dispatch(visible);
    }
}

↓このように見える

更にenumやstring, intなどにも対応できる版

TestBehaviour.cs
public class TestBehaviour : MonoBehaviour
{
    public enum State
    {
        One,
        Two,
        Three,
    }

    [SerializeField]
    private SerializedDispatcher<State> _stateBinding;

    public void SetState(State state)
    {
        _stateBinding.Dispatch(state);
    }
}

状態に応じてオブジェクトを出し分けしたい時に使えます

Discussion