프로젝트22 에너미와 유닛 프리팹 구조 개요프로젝트에서 에너미와 유닛 프리팹을 어떻게 구성하였는지 회고하고 소개하는 글이다 내용프리팹 구성기본적으로 에너미와 유닛 프리팹의 구성은 같다 Rigidbody와 각종 컴포넌트가 달려있는 Root 오브젝트SpriteRenderer가 부착된 Body그외 오브젝트들은 에너미/유닛 컨트롤러가 사용하는 컴포넌트가 부착되어 있다 Root기본적으로 초기화와 자원 정리를 담당하는 Root 클래스를 구현하였다. 필요한 컴포넌트의 초기화와 자원 정리를 한 곳에서 담당하게 만들기 위해 구현한 클래스다 Root 클래스는 필요한 참조를 외부에서 받아와 컨트롤러에 뿌려주며, 컨트롤러는 자신이 생성될 때 초기 세팅을 마치고 풀에서 나올 때 동작에 데이터를 세팅한다(에너미와 유닛 재활용을 위한 풀링 시스템 참고)public .. 2025. 3. 14. UniRx와 MVP 패턴을 이용한 UI 시스템 개요프로젝트에서 UI 시스템을 어떻게 설계하고 사용하였는지 회고하고 소개하는 글 내용구현된 UI 계층 구조 위와 같은 UI 계층 구조를 기반으로 ViewController, View, Presenter의 역할을 명확히 구분하여 UI를 설계했다.ViewController: UI의 카테고리를 구분하는 역할View, Presenter: UI의 기능별 역할을 분리Model - View - Presenter(MVP) 패턴 적용: 특정 데이터가 변경되면 자동으로 UI가 갱신되도록 구현이러한 방식으로 UI를 구성하면, 필요한 UI 요소를 체계적으로 설계할 수 있고, 추상 클래스를 활용하여 일관된 구조로 빠르게 구현할 수 있다. 그리고 유지보수를 용이하게 했다 UI 시스템 초기화 시퀀스프로젝트에서 모든 데이터는 적.. 2025. 3. 14. 동기화 이슈 해결 개요 폴 가이즈 모작 프로젝트 중 점프 클럽 맵을 구현하는 과정에서 동기화 문제가 발생하였고, 이를 해결하는 과정이다. 내용문제 막대 형태의 장애물의 움직임이 각 클라이언트마다 속도가 다르거나 순간이동 하는 이슈가 발생하였다. 원인 분석막대의 움직임은 물리 연산을 기반으로 구현되었으며, PhotonView Rigidbody 컴포넌트를 사용하여 회전 속도를 동기화시켰다.private Rigidbody _rotatingObstacle;private void SetRotaition(){ IObservable rotationTask = Observable.EveryFixedUpdate() .Where(_ => !_cancellationTokenSource.IsCancellationReques.. 2025. 1. 6. Xcode iOS 빌드 이슈 해결 개요macOS Sonoma 운영체제와 Xcode 15.0.1 업데이트 이후, Xcode에서 유니티 프로젝트를 빌드할 경우 Undefined symbols: 에러가 발생했다 내용원인 분석Undefined Symbols 오류는 프로젝트에서 사용하는 외부 라이브러리나 프레임워크가 제대로 링크되지 않을 때 발생한다고 한다. 특히 Unity에서 iOS 빌드를 위해 생성된 Xcode 프로젝트의 경우, iOS 네이티브 플러그인이나 SDK가 CocoaPods를 통해 링크된다고 한다 이러한 문제를 해결하기 위해, 외부 라이브러리를 관리하고 통합하는 역할을 하는 CocoaPods 설정이 누락되거나 링크 오류가 발생하여 라이브러리가 빌드에서 제외되고, 이로 인해 링커가 심볼을 찾지 못할 가능성을 우선적으로 고려했다 이에.. 2025. 1. 6. 튜토리얼 시스템 구현 개요주포츠 튜토리얼 Wild Bowl : Zooports에서 구현한 튜토리얼 시스템에 대해 설명하는 글이다. 내용배경게임 출시를 앞두고 다양한 유저들을 대상으로 테스트를 진행한 결과, 조작법이 어렵다는 피드백이 다수 확인되었다. 이를 해결하기 위해 튜토리얼을 개발하게 되었다. 효율적인 튜토리얼 컨텐츠 추가를 위해, 우선적으로 튜토리얼 시스템을 설계하고 구축하였다. 튜토리얼 시스템 개발 시, 특히 중요하게 고려한 부분은 다음과 같다:튜토리얼 순서의 보장: 컨텐츠의 순서를 유지하여 자연스럽고 체계적인 학습 과정을 제공한다.단계별 작업의 안전성: 각 진행 단계에서 오류 없이 안정적이고 신뢰성 있게 작동할 수 있는 구조를 구축한다.이 두 가지 원칙을 바탕으로 튜토리얼 개발에 집중하였다. 설계 전략1. 데이터를.. 2025. 1. 5. 인앱 결제 복구 이슈 해결 개요Wild Bowl : Zooports 프로젝트에서 빌드 심사를 받을 때 발생했던 이슈를 해결하는 과정을 소개한다. 내용배경애플 앱스토어 정책에 따라 유료 재화를 판매하는 앱은 반드시 결제 상품 복구 기능을 제공해야 한다. 그러나 해당 기능이 없는 초기 빌드 상태에서는 심사를 통과할 수 없었다. 따라서 인앱 결제 복구 기능을 구현해야 했다. 문제점 Unity IAP의 경우 공식 메뉴얼을 참고하며 IAP 모듈은 이미 구현했다. 구현된 모듈의 영수증 유효성 검증 로직은 Apple App Store에서 구매 성공 시 반환되는 콜백에 포함된 영수증 데이터를 기반으로 동작한다(Class Product의 receipt 멤버 참고). 기존 로직에서는 이 receipt를 Lambda로 전송하여 다음과 같은 절차로.. 2025. 1. 5. 이전 1 2 3 4 다음 반응형