Unity 엔진 공부/project2

project2 개발일지 - 7 [Setting UI 기능 연결 마무리]

EJH 2025. 8. 11. 20:02
반응형

Setting UI 기능 연결 마무리 목표

키 설정 값을 입력 받고 저장하는 기능을 완성한다.

로비에서 게임 설정을 눌렀을때 설정창 연결을 하고 esc 버튼을 통해

다시 로비 창으로 넘어갈 수 있게 한다.

 

1. 버튼 ui 배치

우선 설명하는 칸 옆에 버튼 ui를 배치해준다.

상호작용 가능한 ui는 주황색을 기본적으로 배치한다.

그리고 클릭 되었을 때는 빨간색으로 해당 ui가 클릭되었음을 알리며,

그때 입력되는 값으로 키설정을 변경해주는게 목표다.

 

2. 코드작업

private void ClickedKeySettingButton(PointerEventData data)
{
	selected = data.pointerClick;
	selected.GetComponent<Image>().color = Color.red;
}

 

다음은 키셋팅 버튼이 클리되었을 때 호출 될 함수이다.

selected를 통해 현재 클릭된 버튼을 저장한 뒤 색을 바꿔주어 

현재 선택된 버튼을 알려준다.

 

private void SenseKeyInput()
{
	if (selected == null) return;

	
	if (Input.anyKeyDown)
	{
		foreach (KeyCode code in Enum.GetValues(typeof(KeyCode)))
		{
			if (Input.GetKeyDown(code))
			{
				// 중복 체크
				if (IsKeyAlreadyUsed(code))
				{
					Debug.Log($"이미 사용 중인 키입니다: {code}");
					return;
				}

				// 키 매핑 변경
				selected.GetComponentInChildren<TextMeshProUGUI>().text = code.ToString();
				selected.GetComponent<Image>().color = new Color(1, 0.64f, 0.24f, 1);
				selected = null;

				break;
			}
		}
	}
	
}

그 다음 선택된 버튼이 있다면,
중복되는 키가 있는지 확인하고, 텍스트의 값을 변경한 뒤
버튼의 상태를 원래 상태로 변경해준다.

이제 저장과 되돌리기 자체는 이전 작업에서 완료했기 때문에 세팅 UI는 여기서 끝이다.

 

 

3. ui pop close

이전에 사용하던 프레임 워크를 이용해 단순히 세팅 UI를 pop close로 마무리했다.

if (Input.GetKeyDown(KeyCode.Escape))
{
	Managers.UI.ClosePopupUI();
}

 

마무리

일단 ui관련해서 처음 공부하기 때문에 제작하는데 시간이 꽤나 걸린것 같다.

그래도 이번 작업을 통해 UI관련해서 많은 경험을 쌓을 수 있었던 것 같다.

다음으로는 메인 플레이어 관련해서 작업할 예정이다.

반응형