Customization

Customizing your GUI Controls

기능적인 컨트롤은 사용자의 게임을 위해서 필요하고 그러한 컨트롤의 외관은 사용자 게임의 미학을 위해서 매우 중요합니다. UnityGUI에서 사용자는 많은 디테일과 함께 사용자의 컨트롤의 외관을 튜닝할 수 있습니다. 컨트롤의 외관은 GUIStyles와 함께 명령됩니다. 기본적으로 사용자가 GUIStyles를 정의하는 것 없이 컨트롤을 생성할 때 Unity의 기본적인GUIStyle이 적용됩니다. 이 스타일은 Unity에서 내부적이고 빠른 프로토타이핑을 위해서 또는 사용자가 사용자의 컨트롤을 스타일하지 않기로 선택한다면발매된 게임에서 사용될 수 있습니다.

사용자가 함께 일할 많은 숫자의 다른GUIStyles을 가진다면 사용자는 하나의 GUISkin 안에서 그들 모두를 정의할 수 있습니다. GUISkin은GUIStyles의 컬렉션보다 많지 않습니다.

How Styles change the look of your GUI Controls

GUIStyles은 웹 브라우저를 위해서Cascading Style Sheets (CSS)을 흉내내도록 디자인됩니다. 컨텐트와 외관 사이에서 분리와 스타일링을 위한 개별적인 상태 속성의 차이를 포함하는 많은 다른 CSS 방법론이 채택됩니다.

컨트롤이 내용을 정의할 때 스타일은 외관을 정의합니다. 이것은 사용자가 일반적인 Button같이 보이는 기능적인 Toggle 같은 결합을 생성하도록 허락합니다.


다르게 스타일 된 두 개의 Toggle Controls

The difference between Skins and Styles

이전에 언급했듯이GUISkins는GUIStyles의 컬렉션 입니다. 스타일은 GUI 컨트롤의 외관을 정의합니다. 사용자는 사용자가 하나의 스타일을 사용하기를 원한다면 하나의 Skin을 사용하지 않아야 합니다.


인스펙터에서 보여지는 하나의 GUIStyle


인스펙터에서 보여지는 하나의 GUISkin – 다수의GUIStyles 를 포함한다고 관찰됩니다

Working with Styles

모든 GUI 함수는 선택적인 마지막 파라미터를 가집니다: 컨트롤을 보여주기 위해 사용하는GUIStyle. 이것이 생략된다면 Unity의 기본적인GUIStyle이 사용될 것입니다. 이것은 하나의 스트링으로서 컨트롤 타입의 이름을 적용함에 의해 내부적으로 작동합니다. 그래서GUI.Button()은 "button" 스타일을 사용하고, GUI.Toggle()은 "toggle" 스타일을 사용합니다. 사용자는 마지막 파라미터로서 그것을 명시하는 것에 의해 하나의 컨트롤을 위한 기본적인GUIStyle을 덮어쓸 수 있습니다.

/* Override the default Control Style with a different style in the UnityGUI default Styles */
 
function OnGUI () {
	// Make a label that uses the "box" GUIStyle.
	GUI.Label (Rect (0,0,200,100), "Hi - I'm a label looking like a box", "box");
 
	// Make a button that uses the "toggle" GUIStyle
	GUI.Button (Rect (10,140,180,20), "This is a button", "toggle");
}


위의 예제 코드에 의해 생성되는 controls

Making a public variable GUIStyle

사용자가 public GUIStyle 변수를 선언할 때 스타일의 모든 요소들은 Inspector에 나타납니다. 사용자는 거기서 다른 변수들 모두를 편집할 수 있습니다.

/* Overriding the default Control Style with one you've defined yourself */
 
var customButton : GUIStyle;
 
function OnGUI () {
	// Make a button. We pass in the GUIStyle defined above as the style to use
	GUI.Button (Rect (10,10,150,20), "I am a Custom Button", customButton);
}

Changing the different style elements

사용자가GUIStyle을 선언할 때 사용자는 인스펙터에서 저 스타일을 변경할 수 있습니다. 사용자가 지정할 수 있는 그리고 어떠한 타입의 컨트롤에서 적용할 수 있는 많은 숫자의States가 있습니다.


Styles는 각 스크립트당, GameObject에 기반을 두고 변경됩니다

어떠한 컨트롤 상태도 지정된 Text Color이 나타나기 전에 Background 색에 지정되어져야 합니다.

개별적인GUIStyles에 대한 더 많은 정보를 위해서 GUIStyle Component Reference page를 읽어주시기 바랍니다.

Working with Skins

더 많은 복잡한 GUI 시스템을 위해서 스타일의 컬렉션을 한 곳에 모아두는 것이 좋습니다. 이것은GUISkin가 하는 일입니다. GUISkin은 필수적으로 모든 GUI 컨트롤에 완전한 얼굴 리프트를 제공하면서 다수의 다른 스타일을 포함합니다.

Creating a new GUISkin

GUISkin를 생성하기 위해서는 메뉴바에서 Assets→Create→GUI Skin을 선택하시기 바랍니다. 이것은 사용자의 프로젝트 폴더에서GUI Skin을 생성할 것입니다. 인스펙터에 Skin에 의해 정의된 모든GUIStyles을 보기 위해서 그것을 선택하시기 바랍니다.

Applying the skin to a GUI

사용자가 생성했던 skin을 사용하기 위해서 사용자 OnGUI() 함수의 GUI.skin에 그것을 지정하시기 바랍니다.

/* Make a property containing a reference to the skin you want to use */
 
var mySkin : GUISkin;
 
function OnGUI () {
	// Assign the skin to be the one currently used.
	GUI.skin = mySkin;
 
	// Make a button. This will get the default "button" style from the skin assigned to mySkin.
	GUI.Button (Rect (10,10,150,20), "Skinned Button");
}

사용자는 한 번의 OnGUI() 콜을 통해서 사용자가 좋아하는 만큼 skins을 바꿀 수 있습니다.

/* Example of switching skins in the same OnGUI() call */
 
var mySkin : GUISkin;
 
var toggle = true;
 
function OnGUI () {
	// Assign the skin to be the one currently used.
	GUI.skin = mySkin;
 
	// Make a toggle. This will get the "button" style from the skin assigned to mySkin.
	toggle = GUI.Toggle (Rect (10,10,150,20), toggle, "Skinned Button", "button");
 
	// Assign the currently skin to be Unity's default.
	GUI.skin = null;
 
	// Make a button. This will get the default "button" style from the built-in skin.
	GUI.Button (Rect (10,35,150,20), "Built-in Button");
}

역링크