본문 바로가기

분류 전체보기

유니티43_게임 제작 과정 12_시작화면 만들기 유니티를 2019.4.23.f1 LTS 버전으로 업그레이드 함 게임 시작 화면 만들기 게임을 시작하면 첫 화면이 나타난다. 게임 뿐만아니라 일반적인 앱이나 프로그램도 실행하면 첫 화면을 볼 수 있다. 이것을 User Interface (UI)라고 부른다. user(유저)는 사용자라는 뜻이고, Interface는 '접속하다, 둘 사이의 접점'이라는 뜻이다. inter는 '~사이에, ~중간에'라는 뜻이고 face는 '얼굴'이므로 사람과 게임 중간에 얼굴을 마주하게 되는 부분을 나타낸다. 즉, 사용자와 프로그램 사이의 의사소통을 위한 매개체라고 할 수 있다. 현재 만들고 있는 게임에도 첫화면인 UI 화면을 만들고 여기에 게임을 시작할 수 있는 Start(시작) 버튼을 만들어 본다. 이미지(Image) 넣기 U.. 더보기
유니티42_C#_27_더 편리한 델리게이트를 위한 기능들 지금까지 델리게이트 선언과 사용법에 대해 알아보았다. 여기서는 델리게이트를 더 편리하게 사용하기 위해 여러 가지 유용한 기능들을 배워보자. 그 기능들은 다음과 같은 것들이 있다. Anonymous method (익명 메서드 또는 이름없는 메서드) Lambda expression (람다 표현 또는 람다식) Action 과 Func Anomymous method (익명 메서드) 익명메서드는 이름이 없고 메서드의 body(몸체, 내용)만 있는 메서드를 말한다. 이 익명 메서드를 델리게이트에 사용할 수 있다 익명 메서드를 사용하는 것은 델리게이트에 미리 정의된 메서드를 저장하는 것이 아니라 '이름없는'메서드를 만들어서 전달하는 것이다. 메서드명 대신 다음과 같이 delegate 키워드와 함께 익명 메서드의 형태.. 더보기
유니티41_C#_26_Event 이벤트 Event 이벤트 이전 글에서 델리게이트에 대해 알아보았다. 델리게이트는 콜백 기능과 결합하여 화려한 기술을 구사할 수 있다. 이번에는 델리게이트를 이용한 콜백을 더욱 세련되게 구사하는 Event(이벤트)에 대해 알아본다. Event(이벤트)는 앱이나 게임 등에서 흔히 접할 수 있는 기능이다. 그러므로 오늘날 프로그래밍은 이벤트가 주도한다고 할 수 있다. 즉, Event Driven Programming (이벤트 주도 프로그래밍)의 시대라 할 수 있다. 콜백 기능을 떠올려 보면 '주고 받는' 또는 '받고 되돌려 주는' 과정에는 '주는 쪽'과 '받는 쪽'이 있다. 마찬가지로 이벤트 역시 이벤트를 '발생 시키는'쪽과 그 이벤트에 '반응하는 쪽'이 있다. 이벤트를 발생시키는 쪽이 하나라면 반응하는 쪽은 하나 .. 더보기
유니티40_C#_25_Delegate 델리게이트 Delegate(델리게이트) *delegate : (집단의) 대표(자) 델리게이트는 값을 저장하는 참조 타입의 일종이다. 델리게이트는 객체를 참조하지 않고 메서드를 참조한다. 델리게이트 타입의 변수를 만들어서 참조할 메서드를 저장한다. 그러므로 메서드를 전달하고 싶을 때 델리게이트를 사용하면 된다. 즉, 델리게이트는 메서드 전달 대표자라고 할 수 있다. 델리게이트 선언 선언 방법은 다음과 같다. delegate 반환타입 델리게이트명(매개변수); 반환타입과 매개변수는 델리게이트에 저장할 메서드의 반환타입, 매개변수와 일치해야 한다. 델리게이트 선언의 예는 다음과 같다. 어떻게 작동하는 지 예를 만들어서 확인해보자. 위 코드는 Sample( )메서드를 델리게이트에 넣어서 호출하는 예이다. 5번 줄에서 델리게.. 더보기
유니티39_C#_24_Exception handling 예외 처리 예외(Exception) 컴퓨터에서 일어나는 에러는 2가지가 있다. 첫째는 코드를 작성할 때 발생하는 컴파일 에러(compile error) 둘째는 프로그램 실행 중에 발생하는 런타임 에러(run-time error) 첫째 경우는 코드를 입력하는 사람이 잘못 입력하면 편집기 등에서 문제가 있는 부분을 대부분 알려주므로 어디가 잘못인지 파악하는 것이 어렵지는 않다. 둘째 경우는 프로그램을 실행(run)할 때 생기는 런타임 에러인데 이 경우도 컴퓨터가 예상하지 못한 에러와 프로그램 내에서 예상할 수 있는 에러로 나눌 수 있다. 런타임 중 프로그램 내에서 일어나는 예상할 수 있는 에러를 예외(Exception)이라고 한다. C#에는 이런 Exception(예외)이 발생하면 프로그램을 멈추고 그것을 처리하는 체.. 더보기
유니티38_C#_23_FileStream 파일스트림 스크립트에서 변수에 저장하는 데이터는 프로그램을 종료하면 사라진다. 컴퓨터의 메모리에 임시로 저장했기 때문이다. 전원이 꺼지더라도 데이터를 유지하려면 파일(file) 형태로 하드디스크 등에 저장하면 된다. 게임을 하다가 자신의 기록이 저장되는 경우나 게임 도중에 저장(save)했다가 저장했던 내용을 다시 불러오는(load) 과정도 모두 변수에 저장했던 내용을 파일로 변환해서 디스크에 저장해 두었기 때문에 가능하다. C#에서는 이런 작업을 위해 FileStream이라는 클래스를 만들었다. *stream : 흐름 클래스 FileStream은 네임스페이스 System.IO 안에 있다. 디스크에 파일 생성하기 FileStream클래스를 이용하여 파일을 생성한다. 바탕화면에 test.txt 파일을 만들어 본다. .. 더보기
유니티37_C#_22_Generic 제네릭 Generic(제네릭) 앞 글 마지막 부분에 컬렉션의 단점(boxing, unboxing)에 대해 설명하고 그것을 극복하기 위해 Generic을 만들었다고 했다. *generic : 포괄적인, 총칭의 Generic은 '타입(Type)을 미리 정하지 않고(포괄적인 상태로 해두고), 그것을 사용할 시점에 타입을 정의'하는 것을 말한다. 12번줄에 클래스를 만들고 int타입의 필드를 만들었다. 7,8번줄에 이 클래스로 객체를 만들고 data필드에 int값을 저장했다. 그런데 data에 다시 float타입의 값을 넣어야 한다면 다음과 같이 필드를 추가하거나, 새 클래스를 만들어야 한다. 위와 같은 상황을 해결할 수 있는 것이 Generic(제네릭)이다. 제네릭은 타입을 미리 정하지 않은 상태에서 나중에 타입을 .. 더보기
유니티36_C#_21_Collection 컬렉션 Collection(컬렉션) collection은 배열(array)의 단점을 개선하기 위해 만들어졌다. array(배열)는 지정한 배열의 크기를 변경할 수 없고, 배열을 추가하거나 삭제하는 경우 인덱스를 변경해야 하는 불편함이 있다. System.Collections 배열의 단점을 보완하기 위해 System.Collections라는 네임스페이스 안에 다양한 객체의 컬렉션을 정의한 클래스와 인터페이스들이 있다. 중요한 몇 가지 컬렉션들을 살펴본다. collection(컬렉션)은 '수집, 더미, 모아놓은것'이라는 뜻이다. 1. ArrayList 클래스 ArrayList는 크기를 지정할 필요가 없다. ArrayList는 네임스페이스에 포함되어 있으므로 선언하려면 using 키워드로 표시해야 한다. # Add(.. 더보기