Controls

Control Types

사용자가 생성할 수 있는 많은 다른 GUI Controls이 있습니다. 이 섹션은 모든 가능한 디스플에이와 상호적인 컨트롤을 보여줍니다. 컨트롤의 레이아웃에서 영향을 주는 다른 GUI 함수가 있습니다. 그것은 가이드의 Layout 섹션에 설명되어 집니다.

[[ScriptRef:GUI.Label.html|Label]]

Label은 상호작용이 가능하지 않습니다. 그것은 디스플레이 만을 위한 것입니다. 그것은 클릭될 수 없거나 또는 움직여질 수 없습니다. 정보를 보여주기만을 위해서 최고입니다.

/* GUI.Label example */
 
function OnGUI () {
	GUI.Label (Rect (25, 25, 100, 30), "Label");
}


예제 코드에 의해 생성되는 레이블

[[ScriptRef:GUI.Button.html|Button]]

Button은 일반적인 상호적인 버튼입니다. 그것은 마우스가 얼마나 오래 눌리던지에 상관없이 클릭될 때 싱글 타임에 응답할 것입니다. 응답은 마우스 버튼을 클릭했다 놓는 순간 일어납니다.

Basic Usage

UnityGUI에서 버튼은 그들이 클릭될 때 true를 리턴할 것입니다. 버튼이 클릭될 때 어떤 코드를 실행하기 위해서 사용자는GUI.Button 함수를 if 문에서 포함합니다. if 문 안의 것들은 버튼이 클릭될 때 실행될 코드입니다.

/* GUI.Button example */
 
function OnGUI () {
	if (GUI.Button (Rect (25, 25, 100, 30), "Button")) {
		// This code is executed when the Button is clicked
	}
}


예제 코드에 의해 생성된 버튼

[[ScriptRef:GUI.RepeatButton.html|RepeatButton]]

RepeatButton은 일반적인 Button의 변형입니다. 차이점은 RepeatButton은 마우스 버튼이 눌려져있는 매 프레임마다 응답할 것이라는 점입니다. 이것은 사용자가 click-and-hold 기능을 생성하도록 합니다.

Basic Usage

UnityGUI에서RepeatButtons은 그들이 클릭될 때 true를 리턴할 것입니다. 버튼이 클릭될 때 어떤 코드를 실행하기 위해서 사용자는GUI. RepeatButton함수를 if 문에서 포함합니다. If 문 안의 것들은 RepeatButton이 클릭될 때 실행될 코드입니다.

/* GUI.RepeatButton example */
 
function OnGUI () {
	if (GUI.RepeatButton (Rect (25, 25, 100, 30), "RepeatButton")) {
		// This code is executed every frame that the RepeatButton remains clicked
	}
}


예제 코드에 의해 생성되는 Repeat Button

[[ScriptRef:GUI.TextField.html|TextField]]

TextField 컨트롤은 상호작용적이고 텍스트 스트링을 포함하고 있는 하나의 라인 필드를 생성합니다.

Basic Usage

TextField는 항상 하나의 스트링을 보여줍니다. 사용자는TextField에서 보여질 스트링을 제공해야 합니다. 편집이 그 스트링에 행해질 때TextField 함수는 그 편집된 스트링을 리턴할 것입니다.

/* GUI.TextField example */
 
var textFieldString = "text field";
 
function OnGUI () {
	textFieldString = GUI.TextField (Rect (25, 25, 100, 30), textFieldString);
}


예제 코드에 의해 생성된 TextField

[[ScriptRef:GUI.TextArea.html|TextArea]]

TextArea는 상호작용적이고 하나의 텍스트 스트링을 포함하는 다수의 라인 영역을 설정합니다.

Basic Usage

TextArea는 항상 하나의 스트링을 보여줍니다. 사용자는TextArea에서 보여질 스트링을 제공해야 합니다. 편집이 그 스트링에 행해질 때 TextArea함수는 그 편집된 스트링을 리턴할 것입니다.

/* GUI.TextArea example */
 
var textAreaString = "text area";
 
function OnGUI () {
	textAreaString = GUI.TextArea (Rect (25, 25, 100, 30), textAreaString);
}


예제 코드에 의해 생성되는 TextArea

[[ScriptRef:GUI.Toggle.html|Toggle]]

Toggle 컨트롤은 지속적인 on/off 상태를 가지는 하나의 체크박스를 생성합니다. 사용자는 그것을 클릭하는 것에 의해 그 상태를 바꿀 수 있습니다.

Basic Usage

Toggle on/off 상태는 true/false Boolean에 의해서 나타나 집니다. 사용자는Toggle 이 실제 상태를 나타내도록 만들기 위해서 하나의 파라미터로서 boolean을 제공해야 합니다. 그Toggle 함수는 그것이 클릭되면 하나의 boolean값을 리턴할 것입니다. 이런 상호작용성을 캡쳐하기 ㅜ이해서 사용자는Toggle 함수의 리턴값을 받아들이는 boolean을 지정해야만 합니다.

/* GUI.Toggle example */
 
var toggleBool = true;
 
function OnGUI () {
	toggleBool = GUI.Toggle (Rect (25, 25, 100, 30), toggleBool, "Toggle");
}


예제 코드에 의해 생성되는Toggle

[[ScriptRef:GUI.Toolbar.html|Toolbar]]

Toolbar 컨트롤은 필수적으로 Buttons의 행입니다. Toolbar 위의 버튼의 오직 한 개가 한 번에 활성화될 수 있고 그것은 다른 버튼이 클릭될 때까지 활성화 상태로 남겨져 있을 것입니다. 이 행동은 일반적인Toolbar의 행동을 설명합니다. 사용자는Toolbar 위의 임의의 숫자의 버튼을 정의할 수 있습니다.

Basic Usage

Toolbar에서 활성화된 버튼은 정수를 통해서 트랙되어 집니다. 사용자는 함수에서 하나의 아규먼트로서 정수를 제공해야 합니다. Toolbar를 상호작용하게 만들기 위해서 사용자는 함수의 리턴 값으로 정수를 지정해야 합니다. 사용자가 제공하는 컨텐트 배열에서 요소들의 숫자는Toolbar에서 보여지는 버튼의 숫자를 결정할 것입니다.

/* GUI.Toolbar example */
 
var toolbarInt = 0;
var toolbarStrings : String[] = ["Toolbar1", "Toolbar2", "Toolbar3"];
 
function OnGUI () {
	toolbarInt = GUI.Toolbar (Rect (25, 25, 250, 30), toolbarInt, toolbarStrings);
}


예제 코드에 의해 생성되는Toolbar

[[ScriptRef:GUI.SelectionGrid.html|SelectionGrid]]

SelectionGrid 컨트롤은 다수의 행의Toolbar입니다. 사용자는 격자에서 행과 열의 숫자를 결정할 수 있습니다. 오직 하나의 버튼이 한 번에 활성화될 수 있습니다.

Basic Usage

SelectionGrid에서 활성화된 버튼은 정수를 통해서 트랙되어 집니다. 사용자는 함수에서 하나의 아규먼트로서 정수를 제공해야 합니다. SelectionGrid를 상호작용하게 만들기 위해서 사용자는 함수의 리턴 값으로 정수를 지정해야 합니다. 사용자가 제공하는 컨텐트 배열에서 요소들의 숫자는SelectionGrid에서 보여지는 버튼의 숫자를 결정할 것입니다. 사용자는 또한 함수의 아규먼트들을 통해서 열의 숫자 또한 명령할 수 있습니다.

/* GUI.SelectionGrid example */
 
var selectionGridInt : int = 0;
var selectionStrings : String[] = ["Grid 1", "Grid 2", "Grid 3", "Grid 4"];
 
function OnGUI () {
	selectionGridInt = GUI.SelectionGrid (Rect (25, 25, 100, 30), selectionGridInt, selectionStrings, 2);
 
}


예제 코드에 의해 생성되는SelectionGrid

[[ScriptRef:GUI.HorizontalSlider.html|HorizontalSlider]]

HorizontalSlider 컨트롤은 미리 결정된 최소와 최대 값 사이의 값을 변화시키기 위해 드래그될 수 있는 일반적인 수평의 슬라이더 입니다.

Basic Usage

Slider의 위치는 float로 저장됩니다. Slider의 위치를 나타내기 위해서 사용자는 함수의 아규먼트의 하나로서 float을 제공합니다. 거기에는 최소와 최대값을 결정하는 두 개의 추가적인 값들도 있습니다. 사용자가 슬라이더를 적응시키기는 원하다면 그 슬라이더 값에Slider 함수의 리턴값인 float를 지정합니다.

/* Horizontal Slider example */
 
var hSliderValue : float = 0.0;
 
function OnGUI () {
	hSliderValue = GUI.HorizontalSlider (Rect (25, 25, 100, 30), hSliderValue, 0.0, 10.0);
}


예제 코드에 의해 생성되는Horizontal Slider

[[ScriptRef:GUI.VerticalSlider.html|VerticalSlider]]

VerticalSlider 컨트롤은 미리 결정된 최소와 최대 값 사이의 값을 변화시키기 위해 드래그될 수 있는 일반적인 수직의 슬라이더 입니다.

Basic Usage

Slider의 위치는 float로 저장됩니다. Slider의 위치를 나타내기 위해서 사용자는 함수의 아규먼트의 하나로서 float을 제공합니다. 거기에는 최소와 최대값을 결정하는 두 개의 추가적인 값들도 있습니다. 사용자가 슬라이더를 적응시키기는 원하다면 그 슬라이더 값에Slider 함수의 리턴값인 float를 지정합니다.

/* Vertical Slider example */
 
var vSliderValue : float = 0.0;
 
function OnGUI () {
	vSliderValue = GUI.VerticalSlider (Rect (25, 25, 100, 30), vSliderValue, 10.0, 0.0);
}


예제 코드에 의해 생성되는Vertical Slider

[[ScriptRef:GUI.HorizontalScrollbar.html|HorizontalScrollbar]]

HorizontalScrollbar 컨트롤은 Slider 컨트롤과 비슷하나 웹 브라우저나 원드 프로세서를 위한 스크롤링 요소에 비주얼적으로 비슷합니다. 이 컨트롤은 ScrollView 컨트롤을 조종하기 위해 사용됩니다.

Basic Usage

Horizontal Scrollbars은 하나의 예외와 함께Horizontal Sliders과 동일하게 구현됩니다. Scrollbars의 너비를 조절하는 추가적인 아규먼트가 있습니다.

/* Horizontal Scrollbar example */
 
var hScrollbarValue : float;
 
function OnGUI () {
	hScrollbarValue = GUI.HorizontalScrollbar (Rect (25, 25, 100, 30), hScrollbarValue, 1.0, 0.0, 10.0);
}


예제 코드에 의해 생성되는Horizontal Scrollbar

[[ScriptRef:GUI.VerticalScrollbar.html|VerticalScrollbar]]

VerticalScrollbar 컨트롤은 Slider 컨트롤과 비슷하나 웹 브라우저나 원드 프로세서를 위한 스크롤링 요소에 비주얼적으로 비슷합니다. 이 컨트롤은 ScrollView 컨트롤을 조종하기 위해 사용됩니다.

Basic Usage

Vertical Scrollbars은 하나의 예외와 함께Vertical Sliders과 동일하게 구현됩니다. Scrollbars의 너비를 조절하는 추가적인 아규먼트가 있습니다.

/* Vertical Scrollbar example */
 
var vScrollbarValue : float;
 
function OnGUI () {
	vScrollbarValue = GUI. VerticalScrollbar (Rect (25, 25, 100, 30), vScrollbarValue, 1.0, 10.0, 0.0);
}


예제 코드에 의해 생성되는Vertical Scrollbar

[[ScriptRef:GUI.BeginScrollView.html|ScrollView]]

ScrollViews는 컨트롤의 훨씬 더 큰 볼 수있는 영역을 보여주는 컨트롤 입니다.

Basic Usage

ScrollViews는 아규먼트로서 두 개의 Rects가 필요합니다. 첫 번째 Rects는 스크린에서 볼 수 있는ScrollView 영역의 위치와 사이즈를 정의합니다. 두 번째 Rects는 볼 수 있는 영역안에 포함된 공간의 사이즈를 정의합니다. 볼 수 있는 영역의 공간이 볼 수 있는 영역보다 더 크다면Scrollbars는 적절하게 나타날 것입니다. 사용자는 보여질 볼 수 있는 영역의 위치를 저장하는 2D Vector를 지정하고 제공해야 합니다.

/* ScrollView example */
 
var scrollViewVector : Vector2 = Vector2.zero;
var innerText : String = "I am inside the ScrollView";
 
function OnGUI () {
	// Begin the ScrollView
	scrollViewVector = GUI.BeginScrollView (Rect (25, 25, 100, 100), scrollViewVector, Rect (0, 0, 400, 400));
 
	// Put something inside the ScrollView
	innerText = GUI.TextArea (Rect (0, 0, 400, 400), innerText);
 
	// End the ScrollView
	GUI.EndScrollView();
}


예제 코드에 의해 생성되는ScrollView

[[ScriptRef:GUI.Window.html|Window]]

Windows는 컨트롤의 드래그할 수 있는 컨테이너 입니다. 그들은 클릭될 때 포커스를 받고 잃을 수 있습니다. 이것 때문에 그들은 다른 컨트롤과는 약간 다르게 구현됩니다. 각 윈도우는 id 넘버를 가지고 그것의 컨텐츠는Window가 포커스를 가질 때 불려지는 별개의 함수 안에 선언됩니다.

Basic Usage

Windows는 적절하게 일하기 위한 추가적인 함수를 필요로하는 유일한 컨트롤 입니다. 사용자는Window를 위해 실행되는 함수 이름과 id 넘버를 제공해야만 합니다. Window 함수 안에서 사용자는 사용자의 실제 행동 또는 포함되는 컨트롤을 생성합니다.

/* Window example */
 
var windowRect : Rect = Rect (20, 20, 120, 50);
 
function OnGUI () {
	windowRect = GUI.Window (0, windowRect, WindowFunction, "My Window");
}
 
function WindowFunction (windowID : int) {
	// Draw any Controls inside the window here
}


예제 코드에 의해 생성되는Window

[[ScriptRef:GUI-changed.html|GUI.changed]]

사용자가 GUI에서 어떠한 행동을 했는지(버튼을 클릭했거나 슬라이더를 드래그 했거나 하는 등)를 체크하기 위해서 사용자의 스크립트로 부터 GUI.changed 값을 읽어야 합니다. 이것은 사용자가 어떤 것을 했을 때 true로 세팅되고 사용자의 입력이 유효한지를 체크하는 것이 쉽게 됩니다.

공통적인 시나리오는 사용자가Toolbar 에서 어떤 버튼이 클릭되는지에 기반을 한 특정 값을 바꾸기를 원하는 곳의 Toolbar를 위한 것입니다. 사용자는 오직 버튼 중 한 개가 클릭될 때에만 OnGUI()로의 모든 콜에서 값을 지정하기를 원하지 않습니다.

/* GUI.changed example */
 
private var selectedToolbar : int = 0;
private var toolbarStrings = ["One", "Two"];
 
function OnGUI () {
	// Determine which button is active, whether it was clicked this frame or not
	selectedToolbar = GUI.Toolbar (Rect (50, 10, Screen.width - 100, 30), selectedToolbar, toolbarStrings);
 
	// If the user clicked a new Toolbar button this frame, we'll process their input
	if (GUI.changed)
	{
		print ("The toolbar was clicked");
 
		if (selectedToolbar == 0)
		{
			print ("First button was clicked");
		}
		else
		{
			print ("Second button was clicked");
		}
	}
}

어떠한 GUI 컨트롤이 사용자에 의해 조작되기 전에 놓여진다면 GUI.changed는 true를 리턴할 것입니다.

역링크