본문 바로가기

Programming/유니티

유니티 EditorWindow 를 이용하여 유용한 툴을 만들어보자 - 3

textfield

이번시간에는 텍스트를 입력할 수 있는 텍스트필드와 드롭다운 메뉴를 만들어 드롭다운 메뉴를 동적으로 추가할 수 있는 기능을 만들어보겠습니다.

유니티 EditorWindow 를 이용하여 유용한 툴을 만들어보자 - 1
유니티 EditorWindow 를 이용하여 유용한 툴을 만들어보자 - 2
유니티 EditorWindow 를 이용하여 유용한 툴을 만들어보자 - 3
유니티 EditorWindow 를 이용하여 유용한 툴을 만들어보자 - 4

----

----

텍스트 필드

● 문자열을 수정할수있는 텍스트 필드를 만들어보자

//

void OnGUI () {

Textfield();

}

 

//

string textfieldString = "Default";

void Textfield () {

textfieldString = GUILayout.TextField (textfieldString, 10, GUILayout.Width (160f));

}

//결과화면

 

팝업 리스트

//

void OnGUI () {

PopupShow ();

}

//

string[] Pop_Names = { "pop_one", "pop_two", "pop_three" };       <- 팝업에 사용되는 문자열 리스트

int curPopindex = 0;        <- 팝업에서 아이템을 선택할때마다 인덱스가 바뀐다.

void PopupShow () {

//

NGUIEditorTools.BeginContents();    <- 영역시작

 

//

curPopindex = EditorGUILayout.Popup (curPopindex, Pop_Names, GUILayout.Width(100f));     

NGUIEditorTools.EndContents ();     <- 영역끝

}

※ 영역은 반드시 만들어줄 필요가 없으나 복습하는 의미에서 틈나면 계속 사용해보아요~

//결과화면

//클릭하게 되면 아이템을 선택할 수 있게 된다.

 

응용편

팝업 리스트의 문자를 텍스트 필드로 변경하기

- 작업순서

1. 팝업 리스트의 문자열을 변경하기 위해 "이름변경"이란 버튼을 추가한다.

2. "이름변경"버튼을 누르게 되면 팝업들의 텍스트 필드와 "완료"버튼이 표시된다.

3. "완료"버튼을 눌러 돌아간다.

 

1.

2.

3.

 

//

void OnGUI () {

if (isPopNameChange) {        <- 이름변경 화면인가?

PopNameChange ();

} else {

PopupShow ();

}

}

//

string[] Pop_Names = { "pop_one", "pop_two", "pop_three" };       <- 팝업에 사용되는 문자열 리스트

int curPopindex = 0;

bool isPopNameChange = false;        <- 팝업 이름변경 플레그

 

//

void PopupShow () {

//

NGUIEditorTools.BeginContents();

      GUILayout.BeginHorizontal ();

//

curPopindex = EditorGUILayout.Popup (curPopindex, Pop_Names, GUILayout.Width (100f));

 

GUILayout.FlexibleSpace ();

//

if (GUILayout.Button ("이름변경", GUILayout.Width(80f))) {

isPopNameChange = true;            <- 이름변경 시작

}

GUILayout.EndHorizontal ();

NGUIEditorTools.EndContents ();

}

 

//

void PopNameChange () {

//

NGUIEditorTools.BeginContents();

GUILayout.BeginHorizontal ();

 

for (int i = 0 ; i < Pop_Names.Length ; i++) {

//해당 아이템의 이름을 변경한다.   수평으로 정렬되겠죠~

Pop_Names[i] = GUILayout.TextField (Pop_Names[i], 10, GUILayout.Width (160f));   

}

 

GUILayout.EndHorizontal ();

NGUIEditorTools.EndContents ();

 

//영역 밖에 버튼을 생성

if (GUILayout.Button ("완료", GUILayout.Width(80f))) {

isPopNameChange = false;        <- 이름변경 완료

}

}

//아이템 이름 변경 화면 (pop_one -> pop_1로 변경)