FC2ブログ
    08 «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.30.» 10

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

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

     

    【Unity】uGUIのToggleっちゅーやつを触ってみたんだ。あ、これ使い勝手いいんじゃね?って思うじゃなぁ~い? 

    今日はくっそ暑いですねー
    熱射病に気を付けてくださいまし。
    えぇ、私はクーラー効いた部屋から出ません。
    坂内です。

    今まで使ったことのなかった、uGUIのToggleについて触れてみたいと思います。

    Toggleってどんなことできんの?
    動画:20150713日ブログ用
    こんなことができそうです。

    上の動画のオブジェクトはこんな感じ。



    RadioSet ← toggleGroup付与
     Toggle ← toggle付与
     Toggle1 ← toggle付与

    ScrollSet
     base ← toggleGroup付与
      Image ← toggle付与
      Image1 ← toggle付与
      ・・・ ← toggle付与
      
    1つのtoggleGroupに紐づけられたtoggleがラジオボタンみたいに動く感じですかね。
    簡単にtoggleについての説明終わり!

    で、次はtoggleをタップされた時の処理について。

    実際にToggleを押された時の処理は、今回ScrollSetみたいに、はじめからtoggleが付与されたオブジェクトを置いた場合は、それぞれのtoggleについているOnValueChangeに処理を付与してあげればいい。



    この「Image」のオブジェクトを自動的に生成(Prefabにして、Instantiateで作った場合)した場合に、処理を付与するのに苦労したのでメモ!


    void Start(){
      for (int i = 0; i < 作る分; i++ ) {
        GameObject itemSet = Instantiate(toggleがついているオブジェクトのプレハブ) as GameObject;
        itemSet.GetComponent().group = toggleGroup;
        itemSet.GetComponent().onValueChanged.AddListener(OnSelectItem);
      }
    }
    private void OnSelectItem(bool flg){
      // 選択されてるオブジェクトを指定
      Toggle activeItem = tgroup.ActiveToggles().FirstOrDefault();
    }

    って感じでできますた。

    何番目が選択されたかは、toggleアイテムのnameに番号入れとくとか、toggleアイテムのオブジェクトに番号を所有するコンポーネントつけておくとかでできそうっすよね。
    例えばですが。

    void Start(){
      for (int i = 0; i < 作る分; i++ ) {
        GameObject itemSet = Instantiate(toggleのプレハブ) as GameObject;
        itemSet.GetComponent().no = i;
        itemSet.GetComponent().group = toggleGroup;
        itemSet.GetComponent().onValueChanged.AddListener(OnSelectItem);
      }
    }
    private void OnSelectItem(bool flg){
      // 選択されてるオブジェクトを指定
      Toggle activeItem = tgroup.ActiveToggles().FirstOrDefault();
    }

    とか。

    これでラジオボタン的なモノや、リストで選択したやつをターゲットにした処理とか簡単にできそうっすね。
    あ、上の動画だとリストで選択されたやつが水色になってましたよね。
    ここの設定を簡単に説明。

    Imageオブジェクトの子供にselectedFilterっていう水色のImageを1個つけて、こいつをONOFFしてる感じ。
    ONOFFさせるのはtoggleにあるGraphicってやつにこの水色のImageをつけるだけ。



    なんかtoggleリストの名前が「Image」のままだからよくわからなくなってるよね。
    反省。
    反省するけど直さない!

    って感じでできました!

    他になんかいい方法あったらおせーてちょーだいね!

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

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