재미있는 실감미디어

꿈꾸는대로 만들어집니다.

유니티기초[유니티 기초] 15_유니티프로그래밍기본_C#프로그래밍기초2_연산자_UI 텍스트출력하기

김혜영
2020-04-04
조회수 1588

유튜브 15 - https://youtu.be/_x9S4VcRl30

* 오늘의 배울 내용

  • Build Settings모바일로 변경하기
  • 모바일 화면 비율 변경하기
  • UI Text 오브젝트 추가하기
  • UI 텍스트 수정하기
  • 폰트 가져오고 적용하기(폰트 임베디드)
  • Create Empty 빈 오브젝트와 스크립트 만들기
  • 스트립트 GameManager 로 이름 변경하고 코드 작성하기
  • GameManager 스크립트를 인스턴스화 하기
  • 연산의 결과를 화면에 출력해보기

오늘은 프로그래밍 기초 3번째 시간입니다. 간단히 C#을 사용하는 이유와 인스턴스화의 개념을 살펴보고 다양한 연산자를 살펴보도록 합니다.  개념만 살펴보면 잘 와닿지 않습니다. 그래서 마지막에는 UI 오브젝트의 텍스트를 이용하여 화면에 연산 결과를 출력하는 일을 처리해보겠습니다. 아울러 폰트도 임베디드하여 나름 멋지게 만들어 보겠습니다. ^^ 실제적인 실습은 오히려 영상을 보시는 것이 좀 더 쉬울 것입니다. 영상을 참고하세요^^


그럼 이렇게 배운 연산자를 활용하여 간단한 실습을 해보겠습니다. 2D 프로젝트를 만듭니다.


빌드 셋팅을 모바일 버전으로 변경하여 작업해 보겠습니다. 나중에 모바일 앱을 만들기 위해서요^^ File - Build Settings 를 클릭하고, Switch Platform 을 클릭하여 모바일 용으로 빌드 셋팅을 변경합니다.


Game 창의 Free Aspect 를 클릭하여 화면 비율을 변경합니다. 


이제 화면에 텍스트를 만들고 스크립트를 통하여 화면에 스크립트 내용이 출력되도록 만들어 보겠습니다. 하이어라키 창 +를 눌러 UI - Text  오브젝트를 생성합니다.


텍스트는 QuizText 로 이름을 변경합니다. 이제 화면에 Quiz 라는 텍스트를 출력하도록 해볼건데요. 이때 툴은 Rect Tool 을 사용하면 좀 더 편리합니다. Rect Transform 컴포넌트를 수정하여 적당히 화면 중앙에 배치하도록 하며, Text 컴포넌트도 수정하여 글씨 크기를 적당히 조정합니다. 이때 글자의 크기가 작으면 글자가 글 넘침이 발생하여 안보이게 됩니다. Rect Transform의 Width 와 Height 을 통하여 글이 잘리지 않도록 합니다.


이제 폰트를 변경하여 보도록 합니다. 먼저 폰트는 무료 폰트를 다운받습니다. 여기서는 나눔폰트를 다운받았습니다. 다운 받은 폰트를 열고 원하는 폰트를 Project 창으로 드래그하여 폰트를 임포트 합니다.


다음과 같이 폰트를 적용하여 봅니다.


빈 게임 오브젝트를 만들고 게임을 컨트롤하는 게임 메니저로 만들어 보겠습니다.


생성한 빈 오브젝트는 이름을 GameManager 로 변경합니다. 이제 제어할 스크립트를 만들어 보겠습니다. Project + 를 눌러 C# Script 를 클릭하여 스크립트를 추가합니다. 이름은 GameManager 로 즉시 변경합니다.


GameManager로 이름을 변경하면 보통의 스크립트 파일과는 다른 모양의 아이콘으로 변경됩니다. 놀라지 마세요. GameManager는 좀 특별한 이름이라서 그렇습니다. 앞으로 배우게 되겠지만 GameManager는 모든 게임의 전체적인 것을 컨트롤하고자 할때 만드는 아주 특별한 녀석입니다. 시간 관리라든지, 캐릭터 생명이라든지 전체적인 게임 매니전의 역활을 하는 중요한 녀석인데, 여기서는 간단히 화면에 원하는 내용을 출력만 해보겠습니다. 오늘은 이녀석이 보통 스크립트가 아니라는 느낌만 가져가봅니다.


일단 스크립트를 작성해보겠습니다. 

using UnityEngine.UI; 이 부분이 없으면 에러를 출력합니다. UI 오브제트의 Text를 사용하기때문에 이 부분을 추가해주어야 합니다.

public 형태로 Text 형태의 QuizText 변수를 선언합니다. 그리고 QuizText 텍스트의 text 속성값을 “” 사이의 문자로 할당합니다.


이제 GameManager 오브젝트에 GameManager 스크립트를 어태치하여 스크립트를 인스턴스화하는 과정을 거칩니다. 이렇게 해야 스크립트가 게임에서 존재할 수 있게 됩니다.


여기까지 하고 플레이 모드에서 확인하면 에러가 납니다.

NullReferenceException: Object reference not set to an instance of an object

GameManager.Start () (at Assets/GameManager.cs:11)

이런 내용인데, 앞서 우리가 QuizText 변수를 생성하고 할당을 하지 않았기 때문입니다. 


QuizText 텍스트 오브젝트를 다음과 같이 드래그하여 등록하여 줍니다. 이 부분이 잘 이해가 안되신다면 영상을 통해 좀 더 자세한 설명을 확인하세요^^


자, 이제 플레이 모드에서 확인하면 에러 없이 내가 원하는 내용이 화면에 나타나는 것을 볼 수 있습니다. 이제 마지막으로 전 시간에 배운 연산을 활용하여 스크립트를 변경해보겠습니다. 


실제로 연산이 이루어저 값을 출력해보려고 합니다.


짜쟌~ 다음과 같이 연산 결과가 화면에 출력됩니다. 

오늘의 실습 샘플은 제가 퀴즈 게임을 만들기 위해 테스트하던것인데, 연산자를 다루다보니, 실습을 하면 도움이 될듯하여 준비해 보았습니다. 

도움이 되셨나요? ^^


오늘은 지난 시간에 배운 연산자를 활용하여 화면에 간단하게 뿌려주는 일을 해보았습니다. 천리길도 한걸음 부터라는 말이 딱 맞습니다. 하나씩 정복해 나갑시다^^



1 0

매일 한알의 마늘처럼 하나의 미션 수행!

동굴뛰쳐나가지 않고 매일 하나의 마늘을 먹기!!!

게임이나 VR, AR 에 유니티가 언리얼과 같이 많이 사용된다고 듣긴 했지만 나와는 관계없는 프로그램 같았습니다. 그러다가 우연한 계기로 게임 디자인을 하면서 유니티에 관심이 생겼습니다. 


자바스크립트가 유니티와 연동된다고 하니, 유니티가 매력있게 다가왔습니다. 유니티까지 활용한다면 작업 영역의 확장 뿐만 아니라 재미있는 콘텐츠를 제작할수 있겠다는 가능성이 보였습니다.


내가 기획하고, 디자인하고, 개발까지 하여 하나의 게임 앱을 만들수가 있다니! 얼마나 달콤한 유혹인지 모릅니다. 물론 수 많은 산을 넘고 에러를 넘고, 오류를 넘어야 하는 것은 각오를 해야 합니다. 그럼에도 불구하고 무척 매력적 입니다. 인고의 시간을 지나면 나는 상상력을 구현할수 있는 하나의 툴을, 도구를 장착할수 있는 것입니다. 아!이!언!맨! 처럼 말이지요!!!


카카오프로젝트 100은 게으른 저를 동기부여해 줍니다. 당장 통장에 계좌가 찍히는 일은 열심히 하게 되지만, 새로운것을 공부할 때는 의지가 참 약해지고 용두사미가 됩니다. 그런 의미에서 카카오프로젝트 100은 100일동안 의지를 불태울수 있는 작은 동기가 됩니다. 카카오프로젝트 시즌1에서는 자바스크립트 기초를 정리했습니다. 

시즌 2에서는 새로운 공부를 도전합니다. 바로 유!니!티!


여러분 생각은 어떤가요?

top