본문 바로가기
728x90
반응형

분류 전체보기119

Unity 내장 오브젝트 풀(Object Pool) 사용하기 게임을 만들다 보면 총알, 이펙트, 몬스터처럼 짧은 시간 동안 반복적으로 생성되고 파괴되는 오브젝트를 자주 다룬다.이런 경우 단순히 Instantiate()와 Destroy()를 반복하면 성능 저하와 GC(Garbage Collection) 부하가 발생한다.이 문제를 해결하기 위한 대표적인 패턴이 바로 오브젝트 풀(Object Pool) 이다.Unity 2021 버전 이후부터는 UnityEngine.Pool 네임스페이스에내장 풀 시스템이 추가되어, 직접 구현하지 않아도 효율적인 풀을 쉽게 사용할 수 있다.💡 오브젝트 풀(Object Pool) 이란?“필요할 때마다 새로 만들지 말고, 미리 만들어둔 오브젝트를 재사용하자.”오브젝트 풀은 자주 사용되는 오브젝트를 미리 생성해두고 필요할 때 꺼내서 쓰고, 다.. 2025. 10. 13.
Unity에서 tag 비교할 때 CompareTag()를 사용해야 하는 이유 Unity에서 객체의 태그를 비교할 때 보통 아래 두 가지 방법 중 하나를 사용한다.if (gameObject.tag == "Enemy") { ... }또는if (gameObject.CompareTag("Enemy")) { ... }두 코드는 같은 결과를 낼 것처럼 보이지만, Unity 공식 문서에서도 CompareTag() 사용을 권장한다.그 이유를 하나씩 살펴보자.🔍 1. CompareTag()는 문자열 비교가 아니다gameObject.tag == "Enemy"는 순수한 문자열 비교 연산이다.이 말은 곧 매 프레임마다 문자열을 읽고 비교하는 비용이 발생한다는 의미다.Unity의 tag는 내부적으로 문자열 해시 ID로 관리된다.CompareTag()는 이 해시 값을 직접 비교하므로 문자열 연산 없이 .. 2025. 10. 12.
Unity에서 커맨드(Command) 패턴 활용하기 게임을 만들다 보면 이런 고민을 자주 하게 됩니다 👇플레이어가 입력한 행동(이동, 공격, 점프 등)을 기록하거나 되돌리고 싶을 때AI, UI, 플레이어 모두 같은 방식으로 명령을 실행하게 만들고 싶을 때입력 로직과 실제 행동 로직을 깔끔하게 분리하고 싶을 때이럴 때 사용하기 좋은 디자인 패턴이 바로 커맨드(Command) 패턴입니다.🧩 커맨드 패턴이란?요청(행동)을 객체로 캡슐화해서, 실행·취소·재실행 등을 자유롭게 다룰 수 있게 하는 패턴즉, “명령을 데이터처럼 다루는 방식”이에요.버튼 클릭 → “공격 명령”키보드 입력 → “이동 명령”AI의 의사결정 → “점프 명령”이런 행동들을 모두 같은 인터페이스로 실행할 수 있게 만들 수 있습니다.⚙️ 커맨드 패턴의 기본 구조클래스역할ICommand명령의 인.. 2025. 10. 11.
Unity에서 이벤트버스(Event Bus) 패턴 활용하기 Unity에서 게임을 개발하다 보면 여러 오브젝트가 서로 상호작용할 일이 많습니다.예를 들어:플레이어가 공격하면 UI 체력이 줄어야 하고적이 피해를 받고 사망하면 점수 시스템이 반응해야 하고사운드 매니저가 효과음을 재생해야 하는 경우이때 직접 참조(player.OnAttack += ui.UpdateHealth)로 연결하면,오브젝트가 많아질수록 코드가 뒤엉키고 유지보수가 어려워집니다.여기서 이벤트버스(Event Bus) 패턴이 유용합니다.1️⃣ 이벤트버스(Event Bus)란?Event Bus는 이벤트를 “중앙 허브”로 모아 관리하고, 필요할 때 전달하는 패턴입니다.즉,이벤트를 발행(Publish) 하는 오브젝트이벤트를 구독(Subscribe) 하는 오브젝트이 둘을 직접 연결하지 않고,중앙의 Event B.. 2025. 10. 8.
Unity에서 상태패턴으로 캐릭터 움직임과 공격 구현하기 유니티에서 캐릭터의 이동, 공격, 피격, 죽음 같은 행동을 관리할 때조건문(if, switch)으로 상태를 구분하다 보면 코드가 점점 복잡해집니다.이럴 때 유용한 설계 방법이 바로 상태패턴(State Pattern) 입니다.이번 글에서는 상태패턴을 이용해 2D 캐릭터가 움직이고, 공격하고, 맞고, 죽는 간단한 예제를 만들어봅니다.🧩 상태패턴이란?상태패턴은 “객체의 상태에 따라 행동이 달라지는 것”을 각 상태를 클래스로 분리해서 관리하는 방법이에요.보통 이렇게 바뀌죠 👇Before (조건문 기반)After (상태패턴 기반) if문이 점점 길어짐각 상태별 클래스로 분리상태 전환 시 코드 수정 많음상태 클래스만 수정하면 됨테스트 어려움독립적 테스트 가능🚗 예제 시나리오이번 예제에서 캐릭터는 다음 5가지 .. 2025. 10. 7.
Unity에서 추상 클래스 기반 Singleton 패턴 구현하기 게임을 만들다 보면, 전역에서 접근 가능한 매니저 객체가 필요합니다.예를 들어 GameManager, AudioManager, UIManager처럼 하나만 존재해야 하는 클래스들 말이죠.이럴 때 사용하는 대표적인 디자인 패턴이 바로 Singleton(싱글톤) 입니다.이번에는 일반적인 싱글톤이 아니라, 추상 클래스를 기반으로 공통 로직을 재사용할 수 있는 구조로 만들어봅시다.1️⃣ 기본 아이디어Unity에서는 MonoBehaviour 기반의 싱글톤을 만들 때,다른 클래스들이 동일한 패턴을 반복해서 작성하는 경우가 많습니다.예를 들어 이런 형태를 여러 매니저가 각각 구현하곤 하죠public class GameManager : MonoBehaviour{ public static GameManager In.. 2025. 10. 6.
728x90
반응형