zzangae / SimpleModWindow

HomePage
0 stars 0 forks source link

여러 TAB 을 클릭할 때 각 TAB 에 맞는 내용을 동일한 위치에 라벨 표시 #3

Open zzangae opened 4 hours ago

zzangae commented 4 hours ago

IMGUI를 사용하여 6개의 TAB 버튼을 만들고, 각각의 버튼을 눌렀을 때 그에 맞는 Label이 표시되도록 하려면, 버튼 클릭에 따라 어떤 텍스트를 표시할지 관리할 수 있는 변수를 사용해야 합니다.

구현 개요:

주요 설명:

selectedTab 변수:

현재 선택된 탭의 인덱스를 저장하는 변수입니다. TAB 1 버튼을 클릭하면 selectedTab = 0, TAB 2 버튼을 클릭하면 selectedTab = 1과 같이 선택된 탭 번호를 저장합니다.

tabLabels 배열:

각 탭에 따라 표시할 내용을 저장하는 배열입니다. 예를 들어, Label 1, Label 2, ..., Label 6의 내용을 정의해 두었고, selectedTab 값에 따라 이 배열에서 해당하는 내용을 가져와서 Label에 표시합니다.

TAB 버튼 클릭 처리:

각 TAB 버튼을 클릭하면 selectedTab 변수에 해당 버튼의 인덱스가 저장됩니다. 이렇게 저장된 인덱스를 기반으로 Label의 내용을 바꿔서 화면에 표시합니다.

Label 위치:

모든 탭에서 Label은 동일한 위치에 있습니다. 선택된 탭에 따라 다른 내용을 보여줄 뿐, Label의 위치는 고정되어 있습니다.

실행 시 결과:

zzangae commented 4 hours ago

주요 변경 사항:

selectedTab = i; 추가:

각 TAB 버튼을 클릭했을 때, selectedTab 변수를 해당 버튼의 인덱스 값 i로 설정하여 선택된 탭을 저장합니다.

Label 표시:

tabLabels[selectedTab] 값을 Label에 표시하여, 선택된 탭에 맞는 텍스트가 표시되도록 설정하였습니다.

실행 결과:

zzangae commented 4 hours ago

코드에서 GUI.Label을 사용해 선택된 탭에 맞는 내용을 표시하는 부분입니다. 각 탭을 클릭할 때, 탭에 대응하는 Label이 동일한 위치에 표시됩니다. 이 동작은 currentLabel 변수에 저장된 값을 GUI.Label로 출력하는 방식으로 구현되어 있습니다.

해당 코드를 다시 설명드리면:

// 선택된 탭에 따라 Label 내용 변경
string currentLabel = tabLabels[selectedTab];

// Label 크기와 위치 설정
float labelWidth = Screen.width * 0.5f;
float labelHeight = Screen.height * 0.05f;

float labelX = boxX + (boxWidth - labelWidth) / 2;  // 박스 중앙에 배치
float labelY = boxY + boxHeight * 0.1f;  // 박스 상단에서 10% 지점에 위치

// 선택된 탭에 맞는 Label 표시
GUI.Label(new Rect(labelX, labelY, labelWidth, labelHeight), currentLabel, this.labelStyle);

코드 설명:

currentLabel:

tabLabels[selectedTab] 값을 currentLabel에 할당합니다. 이 값은 tabLabels[] 배열에서 현재 선택된 탭의 인덱스에 맞는 값을 가져옵니다. 예를 들어, TAB 1이 선택되면 tabLabels[0] 값인 "Label 1"이 표시됩니다.

Rect 설정:

GUI.Label:

zzangae commented 3 hours ago

Label 스타일 조정:

만약 Label의 스타일(폰트 크기, 색상 등)을 변경하고 싶다면, labelStyle을 조정할 수 있습니다. 예를 들어, 폰트 크기나 색상을 설정하려면 다음과 같이 할 수 있습니다:

if (this.labelStyle == null)
{
    this.labelStyle = new GUIStyle(GUI.skin.label);
    this.labelStyle.fontSize = 16;  // 폰트 크기 설정
    this.labelStyle.normal.textColor = Color.white;  // 텍스트 색상 설정
}

요약: