00:00 intro 00:36 서론 - 사용 예시 01:57 싱글톤의 첫번째 특징 02:28 싱글톤의 두번째 특징 03:16 싱글톤의 세번째 특징 05:05 코드 작성 시작 08:42 싱글톤의 문제점 09:08 코드 완성 후 마무리 리뷰 10:08 실제 플레이 테스트 11:22 수 많은 매니저들을 관리하는 방법들 12:32 제네릭 형태의 싱글톤 구현
@hoyakim42802 жыл бұрын
싱글톤은 조심해야 한다고 배웠습니다. 다른 디자인 패턴과 달리 싱글톤은 "철회"가 어렵습니다. 오브젝트가 하나여야 하는지 오브젝트가 담고 있는 "데이터"가 하나여야 하는지 잘 생각해서 트랜젝션을 대신 사용해야 할 수도 있습니다. 그리고 싱글톤은 멀티프로세스 환경에서 의도한 바와 다르게 동작하기 때문에 그것도 조심해야 합니다. 저는 그래서 데이터가 유일해야 하면 DB(Redis같은 좀 덜 무거운거) 쓰고 데이터와 함께 행동까지 유일해야 하면(디바이스 드라이버 등) 싱글톤을 씁니다.
@김김-e2l Жыл бұрын
디펜던시 가 좀 더 있냐 없냐 차이고 DB 쓰는게 결국 싱글턴 쓰는거지. 내가 코드로 구현해서 메모리에 올려두나 남이 만든 redis 메모리 올려두나 그게 그거. 멀티 프로세스가 아니라 멀티 스레드 말하는 것 같은데 .net의 Lazy나 c++ call_once 같이 언어 차원에서 지원되는 기능 있으니 별 힘 안 들이고도 초기화 가능함.
유튜브 잘 보고 있습니다! 15:25에서 부모오브젝트가 있거나 최상위에 뭔가 존재한다면 이라고 설명하시는데 그럼 or이 들어가야하나요? 그리고 제네릭을 사용할 때, Destroy를 추가해준다면 private void Awake() { if (instance == null) { // 씬 전환이 되어도 유지되도록 // 부모가 있거나 최상위에 뭔가 있다면 if (transform.parent != null || transform.root != null) { DontDestroyOnLoad(this.transform.root.gameObject); } else { DontDestroyOnLoad(this.gameObject); } } else { Destory(this.gameObject); } } 이렇게 해도 될까요?
@김성덕-y8r2 жыл бұрын
자세하게 설명해 주셔서 한번에 이해했네요! 감사합니다!
@솔무한2 жыл бұрын
싱글톤에 대해서 어려웠었는데 오늘코딩님 영상보고 조금은 이해하게 되었습니다! 감사합니다!
@edyfrelliah24852 жыл бұрын
좋은 영상 감사합니다. 다른 패턴영상도 기대되네요
@zihasoo2 жыл бұрын
전 개발자가 심각한 싱글톤 중독이라 고치는데 애먹었었는데 확실히 코드 짜는거 자체는 편한건 있더라구요...
@JustHarry44552 жыл бұрын
항상 감사합니다.
@윤준석-s2d2 жыл бұрын
설명 너무 좋네요 감사드려요
@오하이-j2l2 жыл бұрын
와 깔끔한 설명이네요
@shk35932 жыл бұрын
오늘도 잘 배웠습니다. 많은 도움이 되었습니다~ 전에도 알아듣기 좋았지만 이번 영상은 설명하시는 톤이 더 안정적이고 체계적이 되신 것 같습니다. 감사합니다~
@오늘코딩2 жыл бұрын
잘 찍어보려고 조금씩 더 준비하고 있습니다. 알아봐주셔서 기쁘네요 ㅎㅎ 앞으로 더 깔끔하게 준비해보겠습니다 감사합니다
@톰-l2o Жыл бұрын
안녕하세요! 도움이 많이 되었습니다. 감사합니다. ( _ _)
@박성찬-c1w2 жыл бұрын
좋은 영상 잘 봤습니다. 제너릭 부분 하실때 궁금한게 있습니다. 이미 instance가 존재하면 새로 생긴 싱글톤 오브젝트는 Destroy로 삭제하는 로직은 없어도 되는건가요?
@오늘코딩2 жыл бұрын
좋은 댓글 너무 감사합니다! 사실 destroy로 파괴하는 로직은, 싱글톤자체를 인위적으로 생성하는 경우에 오류 발생을 방지하기 위한 예외처리를 위해서 필요합니다. 그런데 영상처럼 처음 씬에 전부 생성해놓고 끌고가는 경우라면 굳이 생성파괴를 할 일이 없어서 제가 빼먹은것같네요 ㅠ 그렇지만 프로젝트가 규모가 커지고 훗날 어떤 변형이 이뤄질지 모른다면 말씀하신 destroy처리를 해주는게 더 좋은 코딩이라고 생각합니다! 감사합니다.
@llllIIIIlllIIIlll2 жыл бұрын
설명이 좋네요~ ㅎㅎ
@FromTo738 Жыл бұрын
private static DataManager instance; 선언 후 get을 쓰는 것과 public static DataManager Instance;의 차이가 뭔가요?
@한현진-x6u3 ай бұрын
저도 궁금해요
@Wind_mill Жыл бұрын
좋은 영상 감사합니다! 해당 영상을 따라하다가 아래와 같은 문구가 갑자기 등장했는데요. 아직 부족한 실력이라. 어디서 발생하는지 몰라서요... 조언을 부탁드려도 될까요? [Adaptive Performance] No Provider was configured for use. Make sure you added at least one Provider in the Adaptive Performance Settings.
@오늘코딩 Жыл бұрын
Adaptive Performance 관련된 설정이 잘못되어있는것 같네요. 패키지매니저에서 Adaptive Performance 찾아서 삭제하시거나, 아니면 올바르게 세팅해주면 될 것 같습니다. 유니티 Adaptive Performance라고 구글에 검색하셔서 공식문서 확인해보시길 바랍니다.