유니티에서 회전을 표현하는 방식에는 오일러 각(Euler Angles) 과 쿼터니언(Quaternion) 두 가지가 존재한다. 오일러 각은 사람이 이해하기 쉬운 x, y, z 축 기준의 회전값(도 단위) 을 제공하지만, 연산 과정에서 짐벌락(Gimbal Lock) 문제
게임 오브젝트를 배치하거나 이동, 회전 스케일링하는 과정에서 좌표계의 개념은 매우 중요한 역할을 한다. Unity에서는 대표적으로 World Space와 Local Space라는 두 가지 좌표계 사용된다. 이 두 좌표계의 개념과 차이를 명확히 이해하면, 오브젝트의 트랜
게임 개발에서 벡터 연산은 물리 계산, 방향 판정, 카메라 제어 등 다양한 영역에서 활용된다. 그중에서도 내적(Dot Product)과 외적(Cross Product)은 방향과 각도, 평면상의 수직 벡터 계산 등에 필수적인 연산이다. Unity는 Vector3.Dot과
Unity 2D 프로젝트에서 Tilemap과 Tilemap Collider 2D를 이용해 맵 충돌 영역을 구성하는 경우,에디터에서는 충돌이 정상적으로 동작하지만,빌드 후 실행 파일에서 플레이해 보면 일부 타일의 충돌이 사라지는 현상이 발생할 수 있다.에디터 모드에서는
버츄얼 카메라는 이전에 흔히 써오던 Lerp 를 통한 이동이라던지, 여러 복잡한 코드없이 훌륭한 연출을 도와주는 유니티의 기능이다.기본적으로 우선순위를 이용해 보여지는 카메라를 지정하는데 이런 전환 과정이 자동적으로 부드럽게 보간 할 수 있는 특징이 있다.문제는 강제로
게임 개발에서 경로 탐색(Pathfinding)은 AI 캐릭터나 오브젝트가 특정 목적지까지 장애물을 피해 최적의 경로를 찾는 데 필수적인 기능이다. 특히 Grid 기반 맵을 사용하는 2D 혹은 3D 게임에서는 대표적인 휴리스틱 기반 탐색 알고리즘인 A\* 알고리즘이 자
행동 트리(Behavior Tree)는 계층적 구조를 갖는 트리 형태의 자료구조이다. 이 자료구조는 주로 게임 내 인공지능 캐릭터의 의사결정을 정의하기 위해 사용된다. 행동 트리는 상태 기계(Finite State Machine, FSM)에 비해 모듈화와 확장성이 우수
그래프(Graph)는 노드(Node)와 간선(Edge)으로 이루어진 자료구조로, 다양한 형태의 데이터 간 관계를 표현할 수 있다. 게임에서는 맵의 연결 구조, 캐릭터의 상태 전이(State Machine), 퀘스트 의존성 등에서 그래프 형태의 데이터를 자주 다룬다. 이
스택(Stack)과 큐(Queue)는 선형 자료구조(Linear Data Structure)의 대표적인 형태로, 알고리즘 문제 해결, 시스템 아키텍처 설계, 소프트웨어 개발 등 다양한 영역에서 활용된다.스택은 후입선출(Last-In, First-Out, LIFO)의 특
Unity는 기본적으로 싱글 스레드 기반의 게임 엔진이다. 대부분의 Unity API는 메인 스레드에서만 호출이 가능하며, 렌더링, 물리 처리, UI 갱신 등 핵심적인 작업 역시 메인 스레드에서 수행된다. 그러나 게임의 복잡성이 증가함에 따라, 병렬 처리를 통해 성능을
연결 리스트는 데이터를 노드(Node)라는 단위 객체에 저장하고, 각 노드가 다음 노드를 가리키는 참조(Reference)를 통해 선형적인 순서를 구성하는 자료구조다.배열(Array)이 메모리상에 연속된 공간에 데이터를 저장하는 밀집 리스트(Dense List)인 것과
리플렉션이란 프로그램 실행 중에 코드의 구조(클래스, 메서드, 프로퍼티 등)에 접근하고, 조작할 수 있게 해주는 .NET의 강력한 기능이다. 즉, 컴파일된 코드(어셈블리)를 런타임에 분석할 수 있다.이를 통해 객체의 타입, 메서드, 필드, 프로퍼티 등 다양한 정보를 동
다이아몬드 문제(Diamond Problem)는 객체 지향 프로그래밍에서 클래스가 다중 상속(Multiple Inheritance)을 사용할 때 발생할 수 있는 구조적 충돌 문제를 의미한다.일반적으로 다음과 같은 형태를 가진다.클래스 B와 C는 A를 상속받는다.클래스
유니티에서 화면에 오브젝트를 그리기 위해 GPU에게 내리는 명령 하나하나를 Draw Call(드로우콜)이라고 부른다. GPU는 이 드로우콜을 받을 때마다 렌더링 작업을 수행하기 위해 준비 단계를 거치는데, 이 준비 단계가 바로 오버헤드를 만들어낸다.즉, 드로우콜 수가
박싱이란 값 타입(Value Type) 데이터를 참조 타입(Reference Type)으로 변환하는 과정이다.쉽게 말해, 스택(Stack)에 존재하는 값을 힙(Heap)에 복사해서, 객체(Object)처럼 사용하는 것.예시이 코드를 실행하면, 다음과 같은 일이 발생한다
코루틴은 유니티에서 시간의 흐름에 따라 작업을 분할하여 처리할 수 있는 기능이다.한 번에 끝나지 않고, 여러 프레임에 걸쳐서 코드를 조금씩 실행할 수 있게 해준다.이걸 활용하면, 예를 들어 몇 초 대기 후에 동작을 실행하거나, 특정 조건이 충족될 때까지 반복 작업을 쉽
접근 제한자는 클래스, 변수, 함수(메서드) 등 객체 지향 프로그래밍 요소의 접근 가능 범위를 지정하는 키워드이다.코드의 특정 멤버가 클래스 내부, 외부, 자식 클래스 등에서 어떤 범위로 접근될 수 있는지 명확하게 제한 한다.public어디서든 접근이 가능함을 의미pr
클래스는 데이터와 그 데이터를 조작하는 기능(메서드)을 하나로 묶어 놓은 사용자 정의 참조 타입이다.클래스는 객체를 만들기 위한 설계도이며, 객체가 가져야 할 속성(필드, 프로퍼티)과 행동(메서드)을 정의한다.클래스 자체는 메모리에 할당되지 않는다.클래스 정의만으로는
대리자(delegate)는 함수를 참조할 수 있는 타입이다. 즉, 대리자는 특정 시그니처(매개변수와 반환형)를 가진 함수를 변수처럼 저장하고, 나중에 실행할 수 있도록 한다.기본적인 대리자는 아래와 같이 선언한다.이 선언은 두 개의 int를 입력받아 int를 반환하는
Monobehaviour Unity에서 Monobehaviour는 모든 스크립트 컴포넌트의 기본이 되는 클래스다. 사용자는 Monobehaviour를 상속하여 자신의 C# 스크립트를 작성하며, 이를 통해 Unity의 오브젝트에 다양한 동작을 부여할 수 있다. 주요