메뉴를 클릭하면 선택할 수 있는 메뉴를 펼쳐서 보여주는 UI입니다.


Dropdown UI의 value 값을 조작해 쓸 때 호출되는 메소드 작성을 위해
Dropdown 스크립트를 생성 및 작성합니다.
public class Dropdown_UI : MonoBehaviour
{
[SerializeField]
private TextMeshProUGUI text;
public void OnDropdownEvent(int index) //int형 매개변수 선언
{
text.text = $"Dropdown Value : {index}";
}
}

Dropdown UI에서 선택되는 메뉴가 바뀌면 그에 따라 숫자가 바뀌는 것을 확인할 수 있습니다.

using UnityEngine.UI;
public class Dropdown_UI : MonoBehaviour
{
[SerializeField]
private TextMeshProUGUI text;
[SerializeField]
private TMP_Dropdown dropdown; //타입은 "TMP_Dropdown"입니다 주의하세요
private void Awake()
{
dropdown.onValueChanged.AddListener(OnDropdownEvent);
}
public void OnDropdownEvent(int index)
{
text.text = $"Dropdown Value : {index}";
}
}
Dropdown의 onValueChanged.AddListener()에 등록하는 메소드는 int 매개변수 1개를 가지고 있어야 합니다.



Dropdown의 Options는 스크립트를 이용해 설정할 수도 있습니다.
using UnityEngine.UI;
public class Dropdown_UI : MonoBehaviour
{
//Dropdown 제어를 위한 TMP_Dropdown타입 변수와
//Dropdown의 옵션 데이터로 활용되는 문자열 배열 변수 arrayClass를 선언합니다.
[SerializeField]
private TMP_Dropdown dropdown;
private string[] arrayClass = new string[5] { "Warrior", "Mage", "SwordMan", "Archer", "Necromancer" };
private void Awake()
{
// 현재 dropdown에 있는 모든 옵션을 제거
dropdown.ClearOptions();
// 새로운 옵션 설정을 위한 OptionData 생성
List<TMP_Dropdown.OptionData> optionList = new List<TMP_Dropdown.OptionData>();
// arrayClass 배열에 있는 모든 문자열 데이터를 불러와서 optionList에 저장
foreach (string str in arrayClass)
{
optionList.Add(new TMP_Dropdown.OptionData(str));
}
// 위에서 생성한 optionList를 dropdown의 옵션 값에 추가
dropdown.AddOptions(optionList);
// 현재 dropdown에 선택된 옵션을 0번으로 설정
dropdown.value = 0;
}
}

좋은 글들이 정말 많네요. Dropdown이라는 것도 있었네요 감사합니다.