1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UnityでGetComponent<Dropdown>()が動かない

Posted at

はじめに

UnityでUIのDropDown(やButton)を扱うときのスクリプトで躓いたのでメモ。

環境

M1 Mac
Unity 2021.3.17f1

要点

GetComponent<Dropdown>()

がエラーでnullが返ってきて、その先が実行されない。

解決策

using TMPro;

を追加し、

GetComponent<TMP_Dropdown>()

に変更する。

 UIを追加する際に、お尻に「TextMeshPro」と書いてある物を使うときは、このように書く必要があるようだ。UI>Legacy>Dropdownがあるが、なんとなく推奨されず、消えゆくのかなと思ったので、使ってない。
 が、他のサンプルサイトの多くは、Legacy機能を使っているようで、コードをコピペしただけでは、うまく動かない。

コード

TestDropDown2.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class TestDropdown2 : MonoBehaviour{
    List<string> options = new List<string>() { "Motion1", "Motion2", "Motion3", "Motion4", "Motion5" };

    public void Start(){
        TMP_Dropdown dropdown = GetComponent<TMP_Dropdown>();

        dropdown.ClearOptions();
        dropdown.AddOptions(options);

        dropdown.onValueChanged.AddListener((value) => OnValueChanged(value));
    }

    public void OnValueChanged(int value){
        Debug.Log(value);
    }
}
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?