FC2ブログ
    01 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.» 03

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】uGUIのButtonを非活性化(Interactableをfalse)にした時に文字が浮かびあがってしまう問題対応。 

    こんにちは。2月も前半が終わろうとしています。
    来週には・・・・ポケガだすぞっと。

    そうだ。
    Unityのボタンってあるじゃないですか。
    あれ不活性化(InteractableをFalse)にした時、ボタンの文字って逆に浮かび上がってしまいますよね。



    なんかInteractableを外した時に文字も暗くしたいですよね。



    こうなるのが理想。


    ってことで、これを作っていきたいと思います。

    まずはImageを1つボタンにつけます。



    次に、コンポーネントを1つ作成し、Buttonにつける。

    [ButtonInteractableComponent.cs]

    using UnityEngine;
    using UnityEngine.UI;

    [RequireComponent(typeof(Button))]
    public class ButtonInteractableComponent : MonoBehaviour
    {
    [SerializeField] GameObject objFilter;
    Button btn;

    bool interactableMode;

    void Awake() {
    btn = GetComponent<Button>();
    interactableMode = btn.interactable;
    }

    private void Update() {
    if (interactableMode != btn.interactable) {
    interactableMode = btn.interactable;
    ChangeInteractable();
    }
    }

    void ChangeInteractable() {
    if (interactableMode) {
    // 元の色に戻す
    objFilter.SetActive(false);
    } else {
    // interactable OFFの色にする
    objFilter.SetActive(true);
    }
    }
    }



    ButtonInteractableComponentをButtonオブジェクトにつけて、先ほどButtonにつけたimgBtnFilterをobjFilterにアサインします。



    ButtonのTransitionをColorTintからNoneにしておけば完成。

    これで、文字もちゃんと非活性化のようになります。



    今回Updateでinteractableの状態をみたのですが、interactableが変わった時のイベントとかってないんすかね?

    もっと簡単にできそうなんだけど・・・・

    ってことで、ボタンのInteractableのONOFFの時に文字色も一緒に暗くする方法でした。


    もっといい方法あったら教えてちょうだい!

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/952-30f304fd
    この記事にトラックバックする(FC2ブログユーザー)