2024/11 8

[DesignPattern] Service Mediator Pattern

서비스 소비자와 서비스 제공자간을 중개하여 서로 직접적인 커플링 없이 상호작용 할 수 있도록 한 패턴1. 서비스 인터페이스 정의public interface AudioService { void playSound();}2. 구체적인 서비스 구현public class MusicService : AudioService{ public void PlaySound() { }}public class BGMService : AudioService{ public void PlaySound(AudioClip audio) { }}3. 서비스 로케이터 구현public class ServiceLocator { private Dictionary serviceRegistry = new D..

CS/DesignPattern 2024.11.08

[C#] Skip

C#에서 배열의 Skip() 메서드 사용법: 배열 요소를 쉽게 건너뛰기C#에서 배열이나 리스트와 같은 컬렉션을 다루다 보면, 특정 요소를 건너뛰고 작업하고 싶을 때가 있습니다. 예를 들어, 첫 번째 요소를 제외하고 나머지 모든 요소를 처리하고 싶다면 어떻게 할까요? 이때 유용하게 사용할 수 있는 것이 바로 Skip() 메서드입니다. 이번 포스팅에서는 Skip() 메서드가 무엇인지, 그리고 실무에서 어떻게 사용할 수 있는지 간단하게 설명드리겠습니다.Skip() 메서드란?Skip() 메서드는 LINQ (Language Integrated Query)에서 제공하는 확장 메서드로, 컬렉션의 앞부분 요소를 건너뛰고 나머지 요소를 반환합니다. 이 메서드는 컬렉션의 일부를 무시하고 나머지 요소로 새로운 컬렉션을 만들..

Language/C# 2024.11.06

[DesignPattern] 컴포넌트 패턴

Component패턴을 왜 쓰는가?플랫포머 게임을 만든다고 가정하면,플레이어가 걷고 뛰고, 공격하고, 맞고, 맞아서 hp가 소모되고, 물리를 체크하고, 사운드를 틀어주고, 애니메이션을 실행하고....엄청나게 많은 행동을 Player 클래스하나에서 한다면, 엄청나게 길어지고 복잡해짐이를 해결하기 위한 패턴이 Component 패턴임유니티에서는 Monobehaviour를 상속받는 클래스는 컴포넌트로 사용할 수 있도록 되어 있음.Inspector창의 컴포넌트가 이 컴포넌트임.언제 쓸 것인가?한 클래스에서 너무 많은걸 하고 있을 때 역할을 나누기 위해서

CS/DesignPattern 2024.11.05

[Archtecture DesignPattern] MVP / MVC / MVVM 패턴

기본 용어Model데이터를 의미함데이터를 갖고 있고, 데이터에 접근하는 방법을 제공함View사용자에게 모델(데이터)를 보여주는 방법UI라고 생각 할 수 있음.MVC참고Controller사용자의 입력을 처리하고, 그에 따라 모델과 뷰를 업데이트 하는 역할MVC 패턴에서 각각의 책임Model데이터를 정의데이터에 접근 하는 방법 제공뷰나 컨트롤러를 알지 못함ViewUI모델에 의존하고 있으며, 모델의 변경사항을 사용자에게 보여줌Controller사용자의 입력을 처리입력에 의존하고 있음사용자 입력에 따라 모델을 업데이트시각적 표시에 관계 없이 모델을 만들고 테스트 할 수 있음.컨트롤러가 비대해질 수 있음MVP참고각각의 책임Model위와 동일ViewUI사용자 입력을 받음더이상 모델에 의존하지 않으며, Present..

CS 2024.11.04

[Unity] 디버그 모드와 SerializeField

한줄 요약 : 아무 곳에나 [SerialzeField]와 [Serialzable]을 붙이면 안되며, 편하게 디버깅하려 하면 안된다.문제 상황 코드Inventory (class)InventoryItem[] (field)InventoryItem ClassItemDataintItemData Classstring 및 int로 이루어진 필드ItemData클레스에 [Serialzable]Inventory클래스에도 [Seriazable]을 붙여 둔 상황.(별 이유 없이 붙임. 그냥 붙임. 문제 상황디버그 모드에서는 Inventory의 InventoryItem 배열이 전부 기본값으로 0이 들어가서 초기화 되어 있음노말모드에서 보기위해 Inventory 의 InventoryItem[]에 [SerialzeField] 를 ..

Unity&C#/Unity 2024.11.01