본문 바로가기

전체 글28

[C#] (9) 오버로딩 - overloading 이번 포스팅에서는 C# 문법 overloading에 대해서 간략한 설명과 예제를 작성해보겠습니다. 오버로딩은 하나의 함수 이름으로 여러 개의 함수를 입출력만 다르게 선언하여 사용하는 것입니다. 실행 시에는 컴파일러가 매개변수로 입력되는 값을 기준으로 해당되는 함수를 자동으로 실행하게 됩니다. 오버로딩을 쓰는 여러 가지 이유가 있지만 비슷한 기능을 처리하는 함수를 매번 다른 이름으로 선언하여 사용에 혼돈이 올 수 있기 때문이라고 생각합니다. 오버로딩 예제 - 함수 선언 및 실행 함수를 오버로딩 하는 방법은 의외로 간단합니다. 함수를 같은 이름으로 입력과 출력만 다르게 여러 개로 만들면 호출 시 컴파일러가 입력에 맞게 해당되는 함수를 자동으로 실행합니다. 아래는 덧셈 기능을 하는 함수 Addnumber를 o.. 2022. 9. 19.
[Unity] 유니티 싱글톤 오브젝트의 활용 - singleton 프로그래밍을 설계 또는 디자인할 때 사용되는 디자인 패턴 중 하나인 싱글톤은 게임 개발 시 많이 사용되는 설계 방법입니다. 싱글톤은 프로젝트 안에서 유일하게 1개의 인스턴스로 존재하여 다른 클래스와 데이터 공유가 쉽다는 장점이 있습니다. 이런 이유로 게임 개발에서는 데이터 저장, 오디오 관리, 게임 점수 관리를 위해 사용되는 게임 매니저를 싱글톤으로 설계하고 구현하여 프로젝트 내 다른 클래스들과 연계하여 전체 기능을 구현합니다. 1. 게임 매니저 싱글톤으로 구현하기 아래는 게임 매니저를 만들고 해당 인스턴스를 할당할 정적 변수를 선언하고 Awake 함수에서 자신의 인스턴스를 할당하는 예제입니다. 게임 매니저는 score라는 게임 안에서 점수를 저장하는 정수 타입의 변수를 가지고 있으며 해당 점수는 Add.. 2022. 9. 18.
[Unity] 유니티 코루틴 사용법 - Coroutine 사용 이유 코루틴이란 유니티에서 제공하는 기능으로 코드 내에서 구문 실행 도중에 처리를 대기시키거나 순차처리에 함수를 병렬로 동시에 처리하도록 구현할 수 있습니다. 유니티 api에서는 Coroutine이 스레드가 아닌 점을 명심하라고 표기되어있습니다. 말로 하면 좀 복잡해 보이는 데 사용 예시를 보면 쉽게 이해됩니다. 게임 안에서 캐릭터가 중독되어 체력이 감소하는 경우 또는 http 또는 I/O 처리와 같이 대기시간이 긴 비동기 작업을 처리하는 데 사용되며 개인적인 생각이지만 프레임당 실행되는 Update문으로 처리하기보다는 코루틴을 사용하여 지정한 시간 간격으로 처리하여 성능상 이점을 획득할 수 있습니다. 이 포스트에서는 코루틴의 기본적인 사용법 및 특성에 대해 알아보겠습니다. 1. 코루틴에 선언하기 코 루틴은 .. 2022. 9. 18.
[Unity] 유니티 게임 오브젝트를 찾는 방법 - GameObject 이번 포스팅에서는 유니티의 게임 오브젝트를 찾아 레퍼런스를 얻는 방법을 알아보려고 합니다. 이전에 작성한 유니티 컴포넌트 찾는 방법에서 이야기했듯이 유니티 scene 안에 게임 오브젝트는 무조건 transform 컨포넌트를 가지고 있습니다. 이러한 이유로 원활하게 원하는 게임 오브젝트를 찾으려면 transform 컨포넌트를 이용해야 합니다. 매번 진행하고 있는 상황에 따라 게임 오브젝트를 찾는 방법은 다를 수 있기 때문에 대표적으로 많이 사용되는 특정 스크립트를 가지고 있는 오브젝트, 부모나 자식 게임 오브젝트, 비활성화된 게임 오브젝트 등을 찾는 방법을 알아보겠습니다. 1. 먼저 알아야 할 내용 원하는 게임 오브젝트를 원활하게 찾기 위해서는 transform을 이용하여 부모나 자식 오브젝트에 접근하는 .. 2022. 9. 16.
[Unity] 유니티 컴포넌트를 찾는 방법 - GetComponent 유니티는 컴포넌트 단위의 개발 방식을 사용하는 게임 엔진으로 유니티의 게임 월드를 존재하는 요소들은 Scene 안에 게임 오브젝트로 존재하고 이러한 게임 오브젝트는 컴포넌트로 필요한 기능을 추가하여 하나의 완성된 기능을 수행합니다. 예로 씬에서 빈 오브젝트를 만들어보면 기본적인 컨포넌트인 transform 컨포넌트가 포함되어있습니다. 이를 다시 이야기하면 "Scene 안에 존재하는 모든 오브젝트들은 최소 위치나 회전 크기 값을 가지고 있어야 된다."라고 해석이 가능할 것 같은데요. 유니티 사용에서 꼭 필요한 컨포넌트 찾는 검색 방법인 GetComponent 사용 방법을 알아보겠습니다.  1. 먼저 알아야 할 내용기본적인 전제 정보를 알고 나면 컴포넌트를 찾는 문법은 어렵지 않습니다. 그렇기에 문법보다 제.. 2022. 9. 15.
[Unity] 스크립터블 오브젝트 사용 방법 - Scriptable Object 스크립터블 오브젝트는 유니티에서 제공하는 데이터 컨테이너로 게임에서 사용되는 데이터를 게임 리소스에 미리 저장하여 사용할 수 있습니다. Scriptable Object를 사용하기 전에는 일반 스크립트로 데이터 저장 구조를 만들고 프리팹으로 만들어 데이터를 입력하고 사용하는 방식으로 사용되었습니다. 저는 쉽게 이해하기 위해 스크립터블 오브젝트를 "스크립팅이 가능한 리소스 오브젝트"라고 바꿔서 이해하고 사용하고 있습니다. 이번 포스팅에서는 스크립터블 오브젝트의 사용방법과 관련 예시를 작성해 보겠습니다. 1. 스크립터블 오브젝트 선언 스크립터블 오브젝트를 만들기 전에 프로젝트 내에 C# 스크립트로 구조를 선언해야 합니다. using UnityEngine; [CreateAssetMenu] public class.. 2022. 9. 14.
[C#] (8) class 알아보기 - 접근제어자, 생성자 class는 프로그래밍을 작성하는 명세 단위이자 인스턴스화(컴퓨터에서의 메모리화) 되기 전에 상태입니다. 지금까지 예시 작성에 사용된 class는 Main함수를 포함하고 있어 인스턴스화 하지 않아도 실행되었지만 그 외의 class는 new 키워드를 통해 인스턴스화 하지 않으면 class는 껍데기로 존재할 뿐 컴퓨터 세계에서 실존하지 못한다고 볼 수 있습니다. 컴퓨터(운영체제)는 프로그램들을 실행(연산) 하기 위해서 컴퓨터의 주 기억장치에 데이터를 업로드하고 로드된 데이터를 CPU가 연산하여 데이터를 처리합니다. 컴퓨터는 컴파일러를 통해 이해한 내용을 기준으로 class 코드를 분석해 저장할 공간을 파악 계산하여 해당되는 만큼 메모리를 프로그램에 나눠주고(할당하고) 지정된 이름으로 맵핑하여 코드를 실행합니.. 2022. 9. 13.
[C#] (7) 함수의 문법과 특징 - 입출력 방법 함수란 특정 기능을 처리하기 위한 하나의 명령 묶음이라고 볼 수 있습니다. 이러한 명령 묶음은 보통 기능에 맞게 적당한 명령으로 쪼개서 작성합니다. 또한 함수를 구성할 때 입력이나 출력을 사용하는 등 여러 방법으로 작성이 가능합니다. 이번 포스팅에서는 함수의 문법과 작성할 때 어느 정도의 처리 단위로 구성해야 되는지 알아보겠습니다. 1. 함수의 기본 문법 함수를 선언할 때는 첫 번째 키워드는 출력이 있는지 없는지를 정합니다. 두 번째 키워드는 함수의 이름입니다. 세 번째는 () 표기로 되어있는데 이 괄호를 통해 입력이 있는지 없는지를 정합니다. 마지막으로 함수의 범위를 알리는 명령 블록으로 되어있습니다. 이러한 함수의 선언부는 기능의 뼈대라고 봐야 합니다. 선언한 함수는 사용 전에는 프로그램에 아무 작용.. 2022. 9. 12.