DropDown(ドロップダウン)使用時につまずいた点

こんにちは。とーらいです。

先日自作アプリの「片面けんだま」を英語対応しました。

その際、UGUIのDropDownを使用したのですが、いくつか引っかかった点があったので、シェアしたいと思います。

選択したとき、Scriptを呼び、valueの値をわたす

Dropdownでは項目ごとに値がふられています。

項目が選択されたとき、OnValueChangedに設定されたメソッドが呼び出されますが、ここでひとつ注意点があります。

例えば、項目が選択されたとき、下のCallメソッドが呼び出されるようにします。

 
public void Call(int num)
    {
        Debug.Log(num);
    }

この時、インスペクター上のOnValueChangedの項目から設定をしますが、static parametersのCallを選択するとvalueの値が動的に渡せません

そのため、渡されるvalueの値が常に同じになります。

valueの値を渡したいときはDynamic intのCallを選択してください。

OnValueChangedが呼ばれるタイミング

DropDownでは、初期状態で選択されている項目は、一番上の項目になっています。

場合によっては、最初に選択されている項目を一番上以外にしたいかもしれません。

そんな時は、Awake()内または、Start()でvalueの値を変更します。

  public Dropdown dropdown;
    private void Start()
    {
        dropdown.value = 1;
    }

ここで注意が必要なのが、スクリプトからvalueの値を変更した時にも、OnValueChangedが呼び出される点です。

イメージ的には、画面上で項目を選択した時にだけ呼び出されるような気がします。

しかし、その名の通りvalueの値が変更されたら常に呼び出されるので、想定していないところで、呼び出さないよう注意してください。

僕がDropDownを使っていてつまずいた点は以上です。

それでは。

Unity

Posted by toorai