Unity 31

[라이브러리] R3 Reactive Extensions (Rx) - 2

초기 설정 및 기본 개념은 이전 게시글을 참고해 주시기 바라며, 이번 게시글에서는 프레임 기반 연산 (FrameProvider)에 대해 다루겠습니다.R3 기본 개념 및 패키지 설치 프레임 기반 연산IntervalFrame()EveryUpdate()DelayFrame()DebounceFrame() IntervalFrame이름에서 알 수 있듯이, 특정 프레임 간격(Interval)으로 이벤트를 발생시킬 수 있도록 도와주는 메서드입니다.IntervalFrame(프레임 수) 형태로 작성하며, 지정한 프레임 주기에 맞춰 주기적으로 로직을 반복 실행할 때 활용합니다. 예시 코드Observable.IntervalFrame(60) .Subscribe(_ => Debug.Log("60 프레임마다 실행..

Unity 2026.04.23

[라이브러리] R3 Reactive Extensions (Rx) - 1

오늘 다루어볼 주제는. NET용 차세대 Reactive Extensions 라이브러리인 R3에 대해 다루어 보겠습니다. 해당 게시글에서는 기본 시작 가이드 및 R3의 기본 설명에 대해서 다루겠습니다.다루게 된 계기R3를 다루게 된 계기로는 최근 많은 프로젝트를 진행하며, 소프트웨어 아키텍처 설계의 필요성을 느끼며, 관심이 많아져, MVVM, MVP, MVC 등 다양한 설계에 대해 알아보던 중 R3가 구현에 많은 도움을 줄 수 있을 것 같아 해당 주제를 다루게 되었습니다. R3란?'UniRx'의 개발자 neuecc가 현대적인 C# 환경 (C# 12+)에 최적화하여 새롭게 설계했으며, 기존 Rx의 성능 문제와 구조적 한계를 극복하는 것을 목표로 개발한 라이브러리 입니다. 관련 Github는 아래 링크를 ..

Unity 2026.04.23

[디자인 패턴] - 복합체 패턴(Composite)

문제 상황 (Problem)쇼핑몰 주문 시스템이나 파일 시스템을 개발한다고 가정해 보겠습니다.상황:상품(Product) 은 가격을 가지고 있습니다.박스(Box)는 여러 개의 상품을 담을 수 있고, 또 다른 작은 박스도 담을 수 있습니다.클라이언트는 "최종 가격"을 계산하고 싶어 합니다.발생하는 문제:만약 패턴을 쓰지 않는다면, 클라이언트는 "이것이 상품인가? 아니면 박스인가?"를 일일이 확인해야 합니다.박스라면 내부를 다시 순회해야 하고, 상품이라면 가격을 가져와야 합니다. 박스 안에 박스가 또 있다면 코드는 중첩된 if-else문이나 복잡한 재귀 호출로 지저분해집니다.새로운 종류의 '묶음 상품'이 추가되면 클라이언트 코드를 또 수정해야 합니다.해결 방법 (Solution)복합체 패턴은 "전체-부분(Wh..

Unity 2026.03.15

[디자인 패턴] 구조 패턴 - 브리지 패턴

이번 게시글에서는 구조 패턴 중 하나인 브리지 패턴에 대해서 이야기해보려고 합니다.브리지 패턴이라고 하면, 이름만 보았을 때 A와 B가 있다고 할 때 두 개사이를 이어줄 것처럼 보입니다.관련 문제 상황을 예시로 보고 하나씩 알아가 보겠습니다.상황 가정RPG 게임을 만든다고 가정해 봅시다. 직업(Character)과 무기(Weapon)가 있습니다.직업: 전사(Warrior), 마법사(Mage)무기: 검(Sword), 활(Bow)상속만으로 이 모든 경우의 수를 처리하려고 하면 아래와 같은 결합형태의 클래스가 계속 생기게 됩니다.WarriorWithSword (전사 + 검)WarriorWithBow (전사 + 활)MageWithSword (마법사 + 검)MageWithBow (마법사 + 활)문제점만약 여기서 ..

Unity 2026.01.31

[Unity] Project Auditor

이번 게시글에서는 Unity에서 Project Auditor에 대해서 다루어보겠습니다. 다루게 된 계기여러 프로젝트를 진행하며, 최적화나 트러블 슈팅에 대한 관심이 많아져있었고, 그러던 중 유니티가 업데이트되면서 제공하는 신규 기능 및 패키지를 찾아보다가 알게 되어 다루게 되었습니다. Project Auditor란?Project Auditor란 단어별로 해석해 보자면, Proejct(프로젝트) + Auditor(감사자 or 감사관)으로 프로젝트를 점검해 주는 것을 도와주는 기능이라고 이해할 수 있을 거 같습니다. Project Auditor vs Unity ProfilerProject AuditorUnity Profiler정적동적코드 및 프로젝트 점검로직, 메모리, 렌더링 프로파일링 Project A..

Unity 2025.12.13

[디자인 패턴] 구조 패턴 - 어댑터 패턴

이번 게시글에서는 구조 패턴 중 하나인 어댑터 패턴에 대해서 이야기해보려고 합니다.이번 어댑터 패턴을 공부하면서, 기존에 사용하고 있다고 생각했던 어댑터 패턴이 잘못되었다는 사실을 잘 알게 되는 계기가 된 것 같습니다. 아래 문제 상황을 가정해 보겠습니다. 문제 상황소리를 재생하는 시스템 A와, B가 있다고 가정을 하였을 때, A의 소리를 재생하는 시점은 유니티 내부에서 특정 버튼을 클릭하였을 때 PlaySound()로 소리를 재생하고, B의 경우에 똑같은 시점 혹은 방법(유니티 내부에서 특정 버튼을 클릭하였을 때)으로 API를 통해 외부 디바이스에서 소리를 재생한다고 하는 경우를 문제 상황으로 제시해 보겠습니다. 이때 Client는 같은 방식으로 메서드를 실행하지만, 내부적으로 처리가 달라야 하는 경..

Unity 2025.12.01

[디자인 패턴] 생성 패턴 - 프로토타입 패턴

이번 게시글에서는 생성 패턴 중 하나인 프로토 타입 패턴에 대해서 이야기해보려고 합니다.아래와 같은 문제 상황이 있다고 가정하여, 이를 해결하고자 할 때 해결책에 대한 방안을 고려해 보도록 하겠습니다. 문제 상황이미 생성되어 있는 복잡한 구조의 오브젝트를 기준으로, 정확한 복사본을 만들어야 하는 상황이 발생하였습니다. 그렇다면 다음과 같이 복사를 진행하게 될 것입니다. 먼저 같은 클래스의 새 객체를 생성하고, 원본 객체의 모든 필드(오브젝트의 복잡한 구조)를 새 객체에 복사해야 합니다. 하지만, 객체의 일부 필드들이 private, 직렬화 되지않을 때 복사하기 어려움이 생기게 됩니다. 해결책실제 복제가 진행되는 객체들에게 복제 프로세스를 위임합니다. 이 말은 특정 객체 A를 사용하는 클래스 B가 있다고..

Unity 2025.11.21

[디자인 패턴] 생성 패턴 - 빌더

이번 게시글에서는 생성 패턴 중 하나인 빌더 패턴에 대해서 이야기해보려고 합니다.아래와 같은 문제 상황이 있다고 가정하여, 이를 해결하는 디자인 패턴의 구조를 작성하고, 실제 스크립트를 구현해 보겠습니다. 문제 상황많은 멤버 변수를 필드로 가지는 특정 클래스의 객체를 생성한다고 하였을 때, 각 멤버 변수마다의 초기화 값을 생성자를 통해 입력해야 합니다. 이때 생성되는 객체별로, 사용하지 않는 멤버 변수들이 종종 있을 수 있지만, 생성자를 통해 초기화를 진행하게 되면 생성자에 포함되어 있는 파라미터들을 전부 넣어줘야 합니다.빌더 패턴이란?빌더 패턴(Builder Pateern)은 복잡한 객체의 생성 과정과 표현 방법을 다양한 구성의 인스턴스를 만드는 생성 패턴입니다.기존 생성자에 들어갈 매개변수들을 메서드..

Unity 2025.10.14

[디자인 패턴] 생성 패턴 - 추상 팩토리

문제 상황RPG 게임을 만드는 개발자가 있습니다. 이때 각 지형 계절별로 생성되는 몬스터가 다르고, 몬스터들의 각 능력치, 행동패턴, 특성이 조금씩 변형이 이루어져야 한다고 가정할 때 몬스터를 생성하는 스포너부터 시작해서, 각 변형된 몬스터들을 전부 정의해야 하는 상황입니다. 문제 해결몬스터를 스폰하는 스포너에서 생성하는 몬스터를 추상화하여, 각 타입에 맞게 나누고, 서브 클래스에서 재정의하여, 몬스터들의 각기 다른 변형(재정의)에 대해 정의하고, 이를 스폰하는 방식으로 구조를 설계해보려고 합니다. 아래와 같은 클래스 다이어그램으로 진행해 보겠습니다. Factory 이를 이용하는 Client 혹은 Manager에서 IMonsterFactory를 참조받습니다.Client에서 CreateZombie, Cr..

Unity 2025.10.13

[디자인 패턴] 생성 패턴 - 팩토리 메서드

디자인 패턴의 항목 중 생성 패턴에 대해서 알아보겠습니다. 스터디 계기개발을 진행하다 보면 디자인 패턴에 대해서 많이들 이야기하고 실제 많이 활용하는 경우가 많습니다. 하지만 정확히 알지 못하고 사용하게 된다면, 오히려 독이 될 수 있다고 판단하여, 디자인 패턴 하나씩 알아가 보며, 예제 파일을 만들어 보려고 합니다.문제 상황3D 컨텐츠를 모델링하고, 관리하는 앱을 개발하고 있다고 가정해 보겠습니다. 프로포 타입으로, FBX만 관리하고, 조작하며, 콘텐츠를 제작한다고 가정하고, 추후 확장하기 위해, Obj, Glb를 추가한다고 하였을 때, 새로운 Obj, Glb에 대한 클래스를 기존 프로그램에 추가하는 것은 매우 어렵습니다. 이 문제를 해결하기 위해 아래와같은 팩토리 메서드를 활용해볼 수있습니다.팩토리 ..

Unity 2025.10.11