유니티 강좌라니!! 이게 얼마만 인것일까요???

으으..... 제가 최근 제작하던 게임 아실 것이라고 믿습니다.

그 게임에 버그가 많이  생겨버려서..... 흐으윽.....

는 한동안 이것만 할 것 같군요!


아무튼 이제 작성을 하도록 하겠습니다.

그러면 먼저 UI라는 것을 알아야 합니다.

UI라는 것이 무엇일까요??? 

그것은 간단합니다.

게임을 보다 더 게임답게 만들어주는 화면을 가득 채워주는 그런 것들입니다.


게임을 하다가 esc를 누르게 되면 환경설정 메뉴로 들어갈 수 있는 창이 뜨는데 그것도 UI라고 할 수 있을지도 모르겠습니다.


그럼 UnityGUI를 알아보도록 하겠습니다.

이것은 스크립트 기반으로 GUI를 구현하는 것입니다.

이 기능을 이용해서 버튼, 문자, 텍스처를 게임 화면에 그릴수 있게 됩니다.

UnityGUI의 스크립트는 전용 이벤트 함수인 OnGUI로 실행하도록 작성을 합니다.

OnGUI외의 이벤트 함수에선 반영되지 않으니 주의해 주시길 바랍니다.


텍스트나 이미지 배치(레이아웃), 그리기, 입력을 할 때 이벤트 처리등은 모두 OnGUI()의 안에 넣습니다.

다음은 화면에 문자와 버튼을 표시하는 예제 코드입니다.

using UnityEngine;

using System.Collections;

public class SampleGui : MonoBehaviour

{

void OnGUI()

{

GUI.Label (new Rect(10, 10, 100, 40), "Label");


if (GUI.Button(new Rect(10, 50, 100, 50), "Button"))

{

Debug.Log("Push Button");

}

}

}

그럼 이제 예제 코드를 실행하면 'Label'문자와 [Button] 버튼이 표시가 됩니다.

GUI.Label()은 화면에 텍스트와 이미지를, GUI.Button()은 화면에 버튼을 표시하고 그것을 누르게 되면 true를 반환하게 합니다.

그러면 버튼을 누르게 되었을 때에 if문이 실행! 그리고는 Debug.Log()를 표시합니다.

+ Rect클래스를 사용하면 위치와 표시 범위를 설정할 수 있습니다!

+ 그뒤에 " "로 오는 것은 작성될 문자열입니다!


----------------------------------------------------------------------------------------------


그러면 이제 UnityGUI컨트롤을 해보도록합시다!


라벨이나 버튼 말고도 다양한 UI 부품이 준비가 되어있습니다.

유니티에서는 이 UI부품을 컨트롤이라고 한답니다.

각 컨트롤과 예제 코드를 설명 들어가겠습니다.


_ Label / Box _

Label과 Box를 하나로 묶었는데요 그냥 간단합니다.

아까 Label을 체험해 보셨을 것이라고 저는 생각합니다.

그러면 이제 설명을 드리자면 Box는 Label에서 Button처럼 틀이 생기는 것 입니다...

(되게 적당한 설명....????)

아무튼 그런 겁니다.

+ 텍스트와 텍스쳐를 같이 표시할 때는 GUIContent 클래스로 모아서 지정할 수 있습다. 이건 모든 것들에게 해당이 됩니다. 그냥 보면 알아요


public Texture texture;


void OnGUI()

{

GUI.Label(new Rect(10, 10, 50, 50), "Label");

GUI.Label(new Rect(10, 70, 50, 50), texture);

GUI.Label(new Rect(10, 130, 100, 50), new GUIContent("Label", texture));


GUI.Box(new Rect(100, 10, 50, 50),"Box");

GUI.Box(new Rect(100, 70, 50, 50), textrue);

GUI.Box(new Rect(100, 130, 100, 50), new GUIContent("Box", texture));

}


----------------------------------------------------------------------------------------------


_ Button / RepeatButton _

뭐.... Button은 아실 겁니다.

아까 만져봐서....

그러면 이제 무엇이 문제인가???

RepeatButton이 문제인데요 이것은 누르고 있는 동안이 셋팅이 됩니다.

Button은 누르면 true가 반환이 되었죠?

RepeatButton은 누르고 있는 동안입니다.


public Texture texture;


void OnGUI()

{

if(GUI.Button(new Rect(10, 10, 50, 50), "Button"))

{

Debug.Log("Push Button 1");

}

if(GUI.Button(new Rect(10, 70, 50, 50), texture))

{

Debug.Log("Push Button 2");

}

if(GUI.Button(new Rect(10, 130, 100, 50), new GUIContent("Button", texture)))

{

Debug.Log("Push Button 3");

}

if(GUI.RepeatButton(new Rect(160, 10, 100, 50), "RepeatButton"))

{

DeBug.Log("Push RepeatButton 1");

}

if(GUI.RepeatButton(new Rect(160, 70, 100, 50), texture))

{

Debug.Log("Push RepeatButton 2");

}

if(GUI.RepeatButton(new Rect(160, 130, 150, 50), new GUIContent("RepeatButton", texture)))

{

Debug.Log("Push RepeatButton 3");

}

}


----------------------------------------------------------------------------------------------


_ TextField / TextArea / PasswordField _

TextField는 한 줄짜리 텍스트 입력란을 표시합니다.

인수에는 입력란에 표시할 텍스트를 지정합니다.

반환값으로 항상 입력란의 문자열을 돌려줍닏니다.

입력되어 도돌아온 텍스트를 다음 프레임에서 텍스트 입력란에 반영시키려고 인수로 지정하는 string 변수와 반환값을 받아들이는 string변수를 똑같이 했습니다.


TextArea는 여러 행으로 된 텍스트 입력란입니다.


PasswordField는 표시할 문자열을 지정한 문자로 모두 치환해서 표시합니다.

암호를 입력할 때 사용합니다.


string textFieldText = "TextField";

string textAreaText = "TextArea";

string passwordFieldText = "PasswordField";

char maskChar = '*';


void OnGUI()

{

textFieldText = GUI.TextField(new Rect(10, 10, 100, 30), textFieldText);

textAreaText = GUI.TextArea(new Rect(10, 50, 100, 80), textAreaText);

passwordFieldText = GUI.PasswordField(new Rect(10, 140, 100, 30), passwordFieldText, maskChar);

}


----------------------------------------------------------------------------------------------


_ Toggle / Toolbar / SelectionGrid _

Toggle은 On / Off 체크박스가 딸린 Label을 표시합니다. 인수로 선택 상태를 지정할 수 있습니다.

반환값은 현재 상태를 반환!


Toolbar는 버튼 여러 개를 하나의 행에 가로로 표시합니다.

버튼 여러 개 중에서 항상 버튼 하나를 선택한 버튼 그룹입니다. 

표시할 내용을 인수로 지정할 때 string 배열이면 텍스트, Texture배열이면 이미지, GUIContent 배열이면 텍스트와 Texture가 혼합된 버튼을 입니다.

반환값은 선택된 버튼의 인덱스가 됩니다.


SelectionGrid는 옆으로 나열할 버튼 수를 지정해서 버튼 여러 개의 열로 표시합니다.

그 밖의 동작은 Toolbar와 같습니다.


bool toggleValue = ture;


int toolbarSelected = 0;

string[] toolbarTexts = {"Toolbar 1", "Toolbar 2", "Toolbar 3"};

int gridSelected = 0;

string[] gridTexts = {"Grid 1", "Grid 2", "Grid 3", "Grid 4", "Grid 5"};

int gridXCount = 3;


void OnGUI()

{

toggleValue = GUI.Toggle(new Rect(10, 10, 100, 30), toggleValue, "Toggle");

toolbarSelected = GUI.Toolbar(new Rect(10, 50, 200, 80), toolbarSelected, toolbarTexts);

gridSelected = GUI.SelectionGrid(new Rect(10, 140, 200, 80), gridSelected, gridTexts, gridXCount);

}


블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

이젠 결론을 말해야 할 시간이 되었습니다.


제가 해당 게시글을 몰아서 작성을 하고 결론을 어떻게 내 볼까하고 고민을 조금 많이 하게 되었습니다.


결코 한쪽으로만 치우쳐지면 안된다는 저의 강박관념?? 그런 것 때문에 오랫 동안 생각을 하고 난 후에

작성일 기준 12일에 생각을 정리 하였습니다.

------------------------------------------------------

게임을 하는 것은 결코 나쁜 것은 아닙니다.

오히려 지적활동이나 학습 능력을 키울 수 있기에 치매에도 예방된다는 말이 있습니다.

하지만 무엇이든 어떤 좋은 것들도 과하면 독이 된다라는 말이 있습니다.

장시간 게임은 신체에 무리를 주게 되고 결국 장애를 얻을 수 도 있습니다.


질환도 말이죠


하지만 우리는 계속 할 것입니다.

편하고 재미있고 흥미가 있기 때문입니다.


그렇다면 과하지 않고 옳은 자세로 임한다면 결코 좋지 못한 결과를 얻을 수는 없을 것 입니다.


학생들에게 게임을 억압을 하는 것은 미래사회로 가는 길은 물론 저기 제 3국가나 하는 짓입니다.

학생들이 게임을 하므로서 경쟁하는 법을 배우고, 경험을 쌓을 수 있으며, 보다 더 많은 상상을 하게 할 수 있고 그로인해 상상력을 창의력을 쌓을 수 있을 것입니다.

적당하게 즐길 수 있도록 지도하는 것이 오히려 좋은 방향성 같습니다.


그래서 게임은 나쁜 것도 좋은 것도 아닙니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

자세에 대한 건강상의 문제가 끝이라고 봅니다.

중독되는 이유는 각박한 현실과는 다르게 자신이 주인공이 쉽게 될수 있는 현상에 의해서 자주 접하는 것일 뿐 다릅니다.

저도 게임을 오전 일찍 할 수 있다면 기본 6시간이고 최대는 13시간도 넘었을 겁니다. 아마??? 그렇게 게임을 한다고 하더라도 자신이 끄고 싶을 때에 끄고 나오고 그런 것은 문제가 전혀 없습니다.


여기서 중독을 플레이어의 책임으로 돌리는 것은

헬조선식 책임 회피에 불과합니다.


진짜로 그것은 올바른 교육이 행하여 지지 않았기에 발생하는 현상이지 개인의 책임이 아닙니다.

도박할 때의 호르몬과는 전혀 성질이 다릅니다.

느낌은 비슷하고 그럴지라도 상관이 없다고 연구결과를 읽은 적이 있던 것으로 기억을 합니다.

해당 게시글에 대한 내용은 지금 찾아도 나올지는 모르겠지만 읽은 기억은 있습니다.


그럼 폭력성은??? 이라는 생각을 하시는 분들은

제가 이렇게 말하고 싶네요

총을 쏘는 게임에서 사람을 죽이는 행위에 초점을 맞추는 사람은 같이 하는 사람도 적고 사람들이 기피하며 인터넷에서도 혼자입니다.

그런 사람들이 인터넷 게임에 머무를 것 같다고 생각하지 않습니다.

그럼 무엇에 초점을 맞추느냐


그냥 단순한 경쟁입니다.

"난 저 사람을 이기고 말거야"

이런 마음하나로 게임에 임할 뿐입니다.


그렇다면 장시간 같은 불안정한 자세에서 오는 문제와

3D멀미 (인공적으로 만들어진 3D입체에 대한 멀미현상)문제와

뇌가 올바르게 성장하지 않았을 시기의 잦은 스크린과의 접촉 문제말고는 없다고 봅니다.


자 봅시다.

3D멀미는 기술의 한계이거나 자신이 게임 캐릭터와는 다르다는 생각이 강해질 때 나타나는 정신적인 작용과도 같다고 생각합니다.

이런 사람은 스스로 게임을 하지 않게 됩니다.

물론 타인과의 교류를 위해 약을 복용하며 최소한으로 즐기겠지요

이런 사람은 AR과 Ai만으로도 충분히 4차 산업혁명에 적응이 될 겁니다.

중독 처럼 보이는 현상 없이요


그리고 장시간 같은 자세의 불안정한 신체입니다.

이것은 스스로가 노력해야 합니다.

스스로도 불편할 겁니다.

저도 장시간 게임을 할 때에는 가끔씩 눈을 깜빡이거나 스트레칭을 해줍니다.

물론 다시 나쁜 자세로 돌아올 지라도요


그 다음은 뇌가 올바르게 성장하지 않았을 시기의 잦은 스크린과의 접촉입니다.

저희 부모님은 애들이 잦은 화면의 변화에 반응을 하여 집중하고 빠져든다라고 합니다.

그것을 인용하자면

네 이것이 문제입니다.

왜 많은 국가는 초등학생까지의 스크린 소유를 강력 제지 할까요

이것은 그냥 적응하지 못한 변화에 저항하는 것으로 볼 수 있습니다.

하지만 우리나라처럼 이렇게 강하다고는 생각하지 않아요


그냥 스스로 많은 생각을 하고 사고가 어느정도 가능해지는 시기가 중학교로 넘어가는 즈음입니다.



뇌는 25살 까지 성장하는 것으로 알고 있습니다.

늦게 성장하는 만큼 정교한 교육이 필요하지요

하지만, 4차 산업혁명에 올바른 교육이 못하게 하는것이 아닌


어느 정도의 타협이 필요하다고 생각합니다.

저는 게임이 좋아서 프로그래밍이 가능해졌고

트리거형 인공지능( 정해진 것만 수행하는 )정도라면 저에게 사람만 많이 붙여주고 기간을 준다면 개발을 할 지도 모릅니다.

혼자서 이룬 성과죠....(과연 이게 얼마나 강할지는 모르지만)

부족하지만 아주 중요한 성과라고 생각을 합니다.


그렇기에 저희 부모님은 저에게 올바른 교육을 했다고 봅니다.

결과 도출은 담으로

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,