오늘도 응-애 그 자체인 모습을 볼 수 있음.
슬슬 뭐가 많아짐에 따라 간단한 디버깅용 UI를 하나 만들었다.
UI는 로직이랑 분리하고 싶어서 옵저버 패턴을 쓰기로 했음.
처음에는 인터페이스로 구현할까 했는데
1. 서브젝트는 딱히 클래스간에 다를 일이 없다.
2. List<Observer> 필드를 가져야 한다.
라는 이유때문에 그냥 추상 클래스로 구현하기로 했음.
이게 옵저버 인터페이스랑, 이벤트 열거형
그리고 이게 서브젝트임.
List<MonoBehaviour> _observers 를 List<IObserver> observer로 옮기는 저 기괴한 방식은
1. 인스펙터 창에서 옵저버를 등록시키고 싶음
2. 근데 인터페이스는 그게 안되네?
3. 그런데 옵저버를 클래스로 만들자니, 다중상속이 걸리네?(서브젝트가 옵저버 역할도 할 수 있게 하기 위함)
= 그럼 걍 다른 걸로 받고, 거기서 옵저버를 가져오면 되겠네
라는 정신나간 논리로 인해 만들어진 구조임.
이거 처리할 좋은 방법 있으면 조언 바람.
하튼 이런 방식을 통해
그냥 이렇게 상속만 하면 다른 거 손 볼 필요 없이
여기에 원하는 옵저버를 집어넣기만 하면 된다.
그리고 필요한 곳에서 이벤트 타입 넣어서 호출하면
옵저버가 받아서 처리하면 끝
일단 대충 굴러간다.
응애일지 끝
근데 저거 불꽃 이펙트 잘만들지 않았음?
매우 만족스러움.
대충 보긴 했는데 옵저버 따로 만들 필요도 없고 그냥 C# event 쓰면 되는거 아님?
헉 긍가 이벤트라는 게 있다는 것만 알고 한 번도 안 써봐서 생각을 못했네