본문 바로가기

Unity3D/GUI

Unity 3D GUI

유니티에서 GUI 관련함수의 사용예


아래에 소개하는 GUI 관련함수를 호출할 때는 OnGUI() 함수 안에서 호출해야 하며 장면과 분리되어 장면 위에 출력되므로 버튼이나  고정 안내문자열, 메뉴 등을 구성할 때 사용할 수 있다. 아울러 함수 상태로 사용해야 하므로 스크립트에서만 사용할 수 있고 GUI 클래스의 static 함수로 선언되어 있으므로 아래와 같은 형식으로 사용되어야 한다.


GUI.Label(), GUI.Button(), GUI.Box()



GUI.Label()

장면과 분리되어 항상 장면 위에 출력되어야 하는 고정 문자열을 출력하기 위한 함수이며 다음과 같은 원형을 가진다

static function Label(positionRecttext: string): void;
static function Label(positionRectimageTexture): void;
static function Label(positionRectcontentGUIContent): void;
static function Label(positionRecttext: string, styleGUIStyle): void;
static function Label(positionRectimageTexturestyleGUIStyle): void;
static function Label(positionRectcontentGUIContentstyleGUIStyle): void;

GUI.Label() 함수를 통해 화면에 출력된 고정 문자열을 이용자와 상호작용하지 않으므로 마우스에 반응하거나 클릭하여 기능을 수행할 수 없는 특징을 가진다


GUI.Button() 
화면에 이용자가 클릭 가능한 버튼을 출력한다
출력된 버튼을 이용자가 클릭하면 true 를 리턴한다
static function Button(positionRecttext: string): bool;
static function Button(positionRectimageTexture): bool;
static function Button(positionRectcontentGUIContent): bool;
static function Button(positionRecttext: string, styleGUIStyle): bool;
static function Button(positionRectimageTexturestyleGUIStyle): bool;
static function Button(positionRectcontentGUIContentstyleGUIStyle): bool;



GUI.Box()
위에서 소개한 Button 이나 Label 을 시각적인 한 그룹으로 표시해준다
static function Box(positionRecttext: string): void;
static function Box(positionRectimageTexture): void;
static function Box(positionRectcontentGUIContent): void;
static function Box(positionRecttext: string, styleGUIStyle): void;
static function Box(positionRectimageTexturestyleGUIStyle): void;
static function Box(positionRectcontentGUIContentstyleGUIStyle): void;



아래와 같은 스크립트를 작성하여 Hierarchy 뷰의 빈 게임오브젝트에 드래그하여 할당한다

#pragma strict


var gt:GUIText; // Hierarchy뷰에서 GUIText 오브젝트를 드래그하여 Inspector 뷰에 할당


function Start () {

}


function Update () {

}


function OnGUI() {


GUI.Label(Rect(10,10,300,40), "고정 문자열을 표시하는 GUI.Label()함수");


if(GUI.Button(Rect(10,60,200,40), "GUI.Button()함수로 만든 버튼")) {

var str = "버튼이 눌렸습니다";

print(str);

gt.text = str;

}

GUI.Box(Rect(10, 110, 250, 150), "Select Menu"); // Box의 영역에 아래의 GUI가 포함되도록 위치와 크기를 지정한다


// 아래의 GUI 들은 위의 Box 의 영역에 포함되도록 지정하였다

GUI.Label(Rect(20,140,400,50), "다음 메뉴를 선택해주세요");

if(GUI.Button(Rect(20, 190, 200, 30), "Level 1")){

str = "[ Level 1 ] 을 선택했습니다";

print(str);

gt.text = str;

}

if(GUI.Button(Rect(20, 220, 200, 30), "Level 2")){

str = "[ Level 2 ] 를 선택했습니다";

print(str);

gt.text = str;

}

}



스크립트는 실행되어야만 화면출력을 확인할 수 있기 때문에 Scene 뷰에서는 볼 수 없고 실행모드로 테스트하여 게임뷰에서 다음과 같은 화면을 확인할 수 있다. 버튼이 눌리면 실행되는 코드를 확인하기 위해서 버튼이 눌릴 때마다 버튼의 우측 부분에 GUIText 오브젝트에 문자열이 출력되도록 하였다.

GUIText 오브젝트는 GameObject > Create Other > GUI Text 항목을 선택하여 Scene 뷰에 추가할 수 있다