Unity
-
Unity | Is-A 관계 와 Has-A 관계다시한번 개발자도전! 2026. 3. 5. 09:46
1. Is-A 관계 (상속 - Inheritance)정의: "~은 ~이다"라는 관계임. 자식 클래스가 부모 클래스의 한 종류일 때 성립함.구현: 주로 추상 클래스나 일반 상속을 통해 구현함.예시: Slime is a Enemy. (슬라임은 적이다.)특징: * 부모의 필드와 메서드를 그대로 물려받아 재사용하기 좋음.클래스 간의 결합도가 매우 높음. 부모 클래스가 바뀌면 모든 자식 클래스에 영향을 줌.C#은 단일 상속만 지원하므로, Is-A 관계로만 설계하면 구조가 경직될 수 있음.// 부모 클래스: 추상 클래스로 본질을 정의함public abstract class Enemy : MonoBehaviour{ public float health; // 모든 적이 공통으로 가지는 행위 public..
-
Unity | 제네릭(Generics)다시한번 개발자도전! 2026. 3. 4. 10:05
1. 제네릭(Generics)이란?제네릭은 클래스나 메서드에서 사용할 데이터 타입을 미리 정하지 않고, 실제 사용할 때 결정하는 기법임.핵심 개념: 타입을 매개변수화함.프로그래밍 원칙: 코드 중복을 피하고, 객체 지향의 OCP(개방-폐쇄 원칙)를 준수하기 위해 사용함. 2. 사용 방법 및 예제기본 문법보통 대문자 T를 타입 파라미터로 사용함. ✅ 제네릭 메서드유니티에서 특정 컴포넌트가 있는지 확인하고 처리하는 범용 메서드임.public class Logger : MonoBehaviour{ // T가 컴포넌트일 때만 동작하도록 제약 조건(where) 추가 public void LogComponentInfo(GameObject target) where T : Component { ..
-
Unity | 람다식(Lambda Expression)다시한번 개발자도전! 2026. 3. 3. 14:31
1. 람다식이란?람다식은 이름이 없는 **익명 함수(Anonymous Function)**를 만들기 위한 간결한 문법임. 코드를 변수처럼 다루거나, 다른 메서드의 인수로 직접 전달할 때 매우 유용함. 2. 기본 문법과 구조람다 연산자 =>를 기준으로 왼쪽에는 입력 매개변수, 오른쪽에는 식 또는 문장 블록이 위치함. 식/문장_블록">(매개변수) => 식/문장_블록매개변수: 데이터 타입을 명시하지 않아도 컴파일러가 유추함(형식 유추).식/문장: 결과값을 반환하거나 특정 로직을 수행함.3. 활용 방법① Unity Event 시스템 (버튼, UI)public class UIController : MonoBehaviour{ public Button startButton; void Start() {..
-
Unity | 델리게이트를(delegate) 활용한 이벤트(Event System)다시한번 개발자도전! 2026. 2. 25. 09:46
1. 이벤트(event)란?이벤트는 델리게이트를 기반으로 하지만, 객체지향의 캡슐화(Encapsulation)를 지키기 위해 접근 권한을 제한한 "특수한 대리자".한 줄 요약: 외부에서는 구독(+=)과 해지(-=)만 가능하고, 실행(Invoke)은 오직 그 주인만 할 수 있게 만든 보안 장치임.클래스 간의 결합도를 낮추기 위해 사용을 권장 2. 왜 이벤트를 사용하는지?델리게이트만 쓰면 데이터 유실이나 권한 침해의 위험이 있음. 이때 event 키워드를 붙이면 유니티가 이 코드를 컴파일 에러로 막아줌.public class SkillCaster : MonoBehaviour { public Action onSkillUsed; // 델리게이트 선언}public class OtherClass : Mono..
-
Unity | 델리게이트(Delegate)다시한번 개발자도전! 2026. 2. 24. 17:00
1. 델리게이트란? 델리게이트는 말 그대로 '대리인'/보통 함수를 호출할 때는 함수이름()을 직접 부르지만,델리게이트를 사용시 "나 대신 이 함수들을 실행해줘"라고 대리인에게 명단을 넘겨주는 것과 같음.델리게이트는 메서드의주소(참조)를 저장하는 변수임. 즉, 함수를 변수처럼 주고받을 수 있게 해줌.2. 델리게이트의 특징 느슨한 결합 (Loose Coupling): 클래스 A가 클래스 B의 함수를 직접 알 필요 없이, 델리게이트만 호출하면 됨.개방-폐쇄 원칙 (OCP): 기존 코드를 수정하지 않고도 새로운 기능을 델리게이트 명단에 추가하는 것만으로 기능을 확장할 수 있음.이벤트 기반 프로그래밍: 스킬 쿨타임 종료, 아이템 획득 등 "사건"이 터졌을 때 알림을 보내는 용도로 최적임.3. 델리게이트 사용법 3..
-
Unity | 유한상태머신(FSM, Finite State Machine)과 상태패턴(State Pattern)다시한번 개발자도전! 2026. 2. 23. 11:25
1. 상태 머신(FSM)이란 무엇인가?유한 상태 머신(Finite State Machine, FSM)은 객체가 가질 수 있는 상태(State)를 한정하고, 특정 조건에 따라 다른 상태로 전이(Transition)하는 설계 방식.플레이어의 AI, 캐릭터 컨트롤러, 복잡한 UI 시스템 등을 관리할 때 필수적으로 쓰임. 핵심은 "객체는 한 번에 오직 하나의 상태만 가질 수 있다"는 점. 예를 들어, 캐릭터가 동시에 '점프'하면서 '사망' 상태일 수는 없는 것과 같음.2. 왜 상태 머신을 써야 하는가? 단순하게 코드를 짜면 Update() 함수 내부에 수많은 if-else나 switch문이 들어가게 됨. 상태가 3개일 땐 괜찮지만, 10개가 넘어가면 코드가 스파게티처럼 꼬여서 수정하기가 매우 힘들어짐.가독성 향..
-
Unity | BFS(너비우선 탐색) 와 DFS(깊이우선 탐색)다시한번 개발자도전! 2026. 2. 11. 14:24
1. BFS의 개념과 작동 원리BFS는 "가까운 곳부터 전부 확인"하는 전략, 왼쪽부터 탐색을 시작.자료구조: **큐(Queue)**를 사용함 (선입선출, FIFO).Unity 활용 사례:최단 경로 탐색: 가중치가 없는 그래프(예: 타일 기반 맵)에서 최단 거리를 찾을 때 사용함.범위 탐색: 유닛의 이동 가능 범위 표시, 폭발 영향 범위 계산.NavMesh: 내부적으로 경로를 계산할 때 노드 기반 탐색의 기초가 됨. 2. 장점과 단점구분내용장점1. 최단 경로 보장: 가중치가 없는 그래프에서 처음 발견한 해가 반드시 최단 경로임.2. 무한 루프 방지: 노드 깊이가 무한해도 목표가 근처에 있다면 반드시 찾음.단점1. 메모리 소모: 큐에 많은 노드를 저장해야 하므로 공간 복잡도가 높음.2. 비효율적 탐색:..
-
Unity | 타일맵(TileMap)과 룰타일(RullTile)다시한번 개발자도전! 2026. 2. 2. 11:29
📖 타일맵(Tilemap)이란?유니티 매뉴얼에서는 타일맵을 **"2D 레벨을 제작하기 위해 타일 에셋을 그리드(Grid) 위에 배치할 수 있게 해주는 시스템"**이라고 정의함. 단순히 그림 그리는 도구를 넘어, 유니티의 물리(Physics 2D) 및 렌더링 시스템과 긴밀하게 연결된 통합 워크플로임.1. 타일맵 오브젝트 만들기일단 맵을 깔 수 있는 도화지부터 만들어야 함.Hierarchy 창에서 우클릭 → 2D Object → Tilemap → Rectangular 선택함.그러면 Grid라는 부모 밑에 Tilemap 오브젝트가 생김.이 Tilemap이 실제 타일을 그려넣을 레이어라고 보면 됨. 2. 타일 팔레트(Tile Palette) 세팅그림 그릴 때 팔레트가 필요하듯이 타일도 팔레트가 있어야 함.W..