[Unity] 16. 맵 제작 끝 + dropdown 게임 모드 선택

냐항·2022년 3월 24일
0

AI project

목록 보기
16/21

오늘의 목표

1. 맵2 제작 끝!!!!!!!
2. 게임 모드 선택 가능

1. 맵2 제작 끝!!!!

Tile2Unity로 제작했던 맵을 Unity에서 새로 만들었돠!

2. 게임 모드 선택 가능

using TMPro;
using UnityEngine;
using System.Collections.Generic;

public class MapDropdown : MonoBehaviour
{
    [SerializeField] private TMP_Dropdown mode_dropdown;
    [SerializeField] private TMP_Dropdown map_dropdown;
    [SerializeField] private TextMeshProUGUI text;
    private string[] maze_list = new string[3] { "Forest Stage1", "Forest Stage2", "Tokyo Stage1" };
    private string[] sullae_list = new string[4] { "apple", "mango", "juice", "pepper" };

    public void OnModeSelect()
    {
        // 현재 dropdown에 있는 모든 옵션을 제거
        map_dropdown.ClearOptions();

        // 새로운 옵션 설정을 위한 OptionData 생성
        List<TMP_Dropdown.OptionData> optionList = new List<TMP_Dropdown.OptionData>();

        if (mode_dropdown.value == 1)
        {
            // sullae_list 배열에 있는 모든 문자열 데이터를 불러와서 optionList에 저장
            foreach (string str in sullae_list)
            {
                optionList.Add(new TMP_Dropdown.OptionData(str));
            }
        }
        else
        {
            // maze_list 배열에 있는 모든 문자열 데이터를 불러와서 optionList에 저장
            foreach (string str in maze_list)
            {
                optionList.Add(new TMP_Dropdown.OptionData(str));
            }
        }

        // 위에서 생성한 optionList를 dropdown의 옵션 값에 추가
        map_dropdown.AddOptions(optionList);

        // 현재 dropdown에 선택된 옵션을 0번으로 설정
        map_dropdown.value = 0;
    }

    
    public void OnDropdownEvent(int index)
    {
        // 선택한 map 이름을 보여줌 
        if (mode_dropdown.value == 1)
        {
            text.text = $"{sullae_list[map_dropdown.value]}";
        } else
        {
            text.text = $"{maze_list[map_dropdown.value]}";
        }
        

    }
}

미로찾기, 술래잡기 모드에 따라 dropdown에 보이는 option들을 분기해줬당


느낀 점

눈 떠보니 4주차가 끝나가네,,,
왕,,,, 벌써 4월이라니,,,
시간은 참 빨라,,,
벌써 올해의 1/4가 가고있다

dropdown에 대한 자료가 많이 없어서 걱정했지만
뚝딱뚝딱 하다보니 또 된다.
저 mode를 선택할 때의 함수를 private void Awake(), private void Update()로 했을 때는 불가능했다.
왜냐하면 Awake는 시작할 때 1회 호출, Update는 매 프레임마다 호출하기 때문이다.
그래서 함수를 따로 만들어줬다.
요것은 제노님이 알려주셨다!!!!
역쉬 넘나 똑똑한 살암,,,✨

0개의 댓글