본문 바로가기
Modern Developer Archive

주니어 개발자의 기록용 블로그

개발 기록을 빠르게 찾고, 오래 읽어도 편한 기술 블로그

#Unity #Backend #GameDev #Troubleshooting
최신 글 보기

전체 글28

Codex Codex 명령어 요즘은 LLM을 활용해 코딩과 디버깅을 진행하는 흐름이 빠르게 확산되고 있다.그동안은 ChatGPT 같은 GUI 환경에서 작업해왔지만, CLI 기반으로 활용하면 반복 작업 자동화나 워크플로우 통합 측면에서 더 효율적일 수 있다고 해서 도입을 시도해보려 한다.본격적으로 적용하기 전에, 자주 사용할 명령어들을 먼저 정리해두고 실제 개발 과정에 연결해볼 예정이다. ## 1) Codex 명령어 (Codex TUI 안에서, `/` 슬래시 명령)### 1-1. 작업 흐름 핵심- `/plan` 구현 전에 계획(설계/작업 순서/파일 영향 범위)부터 정리할 때- `/diff` 현재 변경사항 Git diff 출력(추적 안 된 파일 포함)- `/review` 워킹 트리 리뷰(리스크/누락/품질 점검)- `/mention.. 2026. 3. 2.
유니티 관련/유니티 디자인 패턴 MVVM + EventBus 패턴 구현하기 MVVM 패턴이란?MVVM은 Model, View, ViewModel로 구성된다.Model은 UI를 모르고 데이터/비즈니스 로직을 담당한다.View(MonoBehaviour)는 UI를 표시하고 입력을 ViewModel로 전달하며, ViewModel이 제공하는 상태 변화를 구독해 UI를 갱신한다.ViewModel은 UI에 필요한 상태와 동작(메서드/커맨드)을 제공하고, 상태 변경을 이벤트/옵저버블 등으로 알린다.View는 Unity 라이프사이클에 맞춰 바인딩을 등록/해제한다. 내가 진행한 방식 Event Bus+ MVVM왜 이렇게 진행을 했는가?여러 가지 이유가 있어서 하나씩 작성하겠다. 1) GlobalEventHub를 둔 이유게임플레이 시스템과 UI가 서로 직접 참조하기 시작하면, 기능이 늘어날수록 의.. 2026. 1. 11.
유니티 관련/유니티 디자인 패턴 Event Bus(핵심 컴포넌트) 구현 이벤트 버스 패턴은 전역으로 있는 관리자가 특정 이벤트를 구독하거나 게시한 이벤트를 뿌리는 기능을 한다. 쉽게 말해서 우리가 FPS게임에서 클리어 했을때 다양한 이벤트가 등장하지 않는가?이벤트 버스를 통해 구현을 했다고 하면 관련 이벤트를 이벤트 버스에 구독을 진행 후. 이겼을때 해당 이벤트를 실행해 관련 이벤트를 전부 실행하는 기능이라고 보면 편하다. 이벤트 버스(Event Bus) 패턴은 전역에서 공유되는 이벤트 허브(버스) 가 이벤트를 발행(publish) 하고, 해당 이벤트를 구독(subscribe) 한 핸들러(리스너)들에게 이를 전파(dispatch) 하는 구조다.발행자는 “어떤 일이 발생했다”는 이벤트만 게시하고, 실제로 어떤 로직이 실행되는지는 구독자들이 결정한다. 이로 인해 발행자와 구독자.. 2026. 1. 11.
유니티 관련/유니티 디자인 패턴 Event Bus + MVVM으로 UI 아키텍처 리팩토링하기 내가 새로운 UI 아키텍처를 작성한 이유이전 프로젝트에서는 UI 관련 로직을 UIManager라는 정적 클래스 하나에 모아두고, 대부분의 UI 동작을 그 안에서 컨트롤했다. 당시 막 시작한 개발자였던 당시에는 이 방식이 꽤 편했다.어디서든 UIManager만 호출하면 원하는 UI를 띄우거나 갱신할 수 있었고, 개발 초반에는 생산성도 높았다.특히 캔버스에 붙는 스크립트 중심으로 흐름이 잡히다 보니, 분기 처리나 UI 제어 로직을 빠르게 작성하기도 쉬웠다. 하지만 시간이 지나면서 유지보수를 반복하다 보니 구조적인 한계가 점점 뚜렷해졌다. 기존 방식(UIManager 중심)의 문제점UIManager 하나가 너무 많은 기능과 책임을 떠안게 되면서,클래스가 비대해졌다.(God Object) 기능이 늘어날수록 비.. 2026. 1. 11.
카테고리 없음 isActiveAndEnabled 유니티에서 isActiveAndEnabled는 “이 컴포넌트가 지금 실제로 동작 가능한 상태인가?”를 한 번에 확인하는 프로퍼티이다. (MonoBehaviour에 있음)어떤걸 체크하나??isActiveAndEnabled == true가 되려면 둘 다 만족해야 한다.GameObject가 활성 상태gameObject.activeInHierarchy == true (부모까지 포함해서 Hierarchy에서 활성)해당 컴포넌트(MonoBehaviour)가 enabledbehaviour.enabled == true즉, 아래 둘을 합쳐둔 “실행 가능 여부” 체크언제 쓰나?코루틴/업데이트 로직/이벤트 처리 전에 “지금 처리해도 되나?” 가드용OnDisable, OnEnable 같은 라이프사이클 상태와 맞춰 안전하게 분.. 2026. 1. 10.
영단어 정리 영단어 정리 Capacity : 용량 Cast : 시전 Emission : 방사, 발행 Rate : 비율 Shape : 모양 Gradient : 구배 Patrol : 순찰 Detection : 발각 Combat : 전투 Probability : 확률 Maintenance : 유지, 정보 Bore : 관통 Compat (Compatibility) : 호환성 Compilation : 편집 Connection : 연결 Preliminary : 예비, 초기, 사전 Identifier : 식별자 Diagonal : 대각선 Replication : 복제 Execution : 실행 Context : 상태Infrastructure : 기반 시설 2025. 12. 14.
유니티 관련/유니티 오디오 믹서 (Aduio Mixer) 서론-어쩌다 보니 팀원 5명이 모여 신규 프로젝트를 진행하게 됐다. 그와 별개로 회사의 다른 신규 프로젝트들도 맡게 되면서, 게임에서 필수이자 공통적인 요소(예: 사운드)를 구현할 때마다 조금씩 막히는 부분이 있었다.특히 오디오 믹서 설정은 여러 번 해 봤는데도 매번 검색부터 시작하는 내 모습을 발견하곤 했다. 그래서 이번에 기록으로 남겨 두어, 다음에 같은 상황을 마주했을 때 한 번 더 되새기려 한다. AudioMixer- 오디오 믹서는 AudioSources에서 생성하는 오디오 시그널을 더 복잡하게 라우팅하고 믹싱하는 AudioSOurces를 참조할 수 있는 에셋이다. AudioGroup 계층 구조를 통해 믹싱을 기반으로 하는 카테고리를 생성한다. AudioMixer를 사용하는 이유? 오디오 제어 .. 2025. 9. 14.
업무 용어 정리 업무 용어 정리 USP (Unique Selling Proposition) => 차별화된 가치, 경쟁 제품과 구별되는 핵심 강점 Hard Currency => 프리미엄 과금 화폐, 주로 현금 결제로 획득하는 고가치 재화 RR (Retention Rate) => 리텐션율, 일정 기간 후에도 사용자가 서비스를 계속 이용하는 비율 Boilerplate => 반복적이고 표준화된 코드 섹션, 기능보다 구조를 위해 작성되는 코드 Snapshot => 전체 데이터를 복사하지 않고 특정 시점의 상태만 저장하는 방식 저장 공간 효율이 높고 빠르게 생성 가능 [Obsolete] => 해당 요소(메서드, 클래스 등)가 더 이상 사용되지 않음을 알리는 속성 컴파일 시 경고 또는 오류를 발생시켜 사용 중단을 유도 Reflection.. 2025. 9. 8.
유니티 관련/유니티 Custom Editor 서론- 프로젝트 진행 중 파티클 시스템을 사용하는데 SortLayerID를 하나씩 세팅을 해줘야하는 번거로움이 있었다.해당 번거로움을 개선하기 위해서 Awake에 Effect라는 SortLayerID를 부여하도록 했지만 이번에 기획자분도 새롭게 참여를 할 것 같아 가시성이 좋게 진행하는 방법이 뭐가 있을까 싶었다.그렇게 찾은 기능이 Custom Editor기능이다. Custom Editor커스텀 에디터의 목적 1. 인스펙터 UI 제어 * 유니티 기본 인스펙터는 [SerializeField]된 필드를 자동으로 나열해 보여준다. * 하지만 일부 데이터는 슬라이더, 드롭다운,색상 선택기 등으로 보여주는게 훨씬 직관적이다.EX) SortinLayerID는 단순 int입력으로 값을 지정했다면 커스텀 에디.. 2025. 8. 30.
최적화 오브젝트 풀 (Object Pool) 오브젝트 풀최적화 기법을 이야기할 때, 가장 먼저 떠오르는 것 중 하나가 바로 **오브젝트 풀(Object Pool)**이다.유니티에서도 기본 제공하는 오브젝트 풀이 있지만,내가 원하는 기능들을 자유롭게 넣을 수 있도록 직접 제작해보고 싶었다.마침 프로토타입을 진행하던 중, 시간이 조금 여유로워서그 기회에 오브젝트 풀을 만들어 보기로 했다. IPoolable풀에서 관리할 오브젝트들에 연결할 인터페이스.즉 오브젝트풀에 사용할 객체에 해당 인터페이스를 필수로 상속해야 사용이 가능하다. using UnityEngine;namespace dev.jun{ public interface IPoolable { //오브젝트풀 오브젝트가 준비된 상태인지 확인! bool isGetAb.. 2025. 8. 13.

Designed by 티스토리