2024. 10. 29. 01:20ㆍ코드 전시관/Unity
HappyKit : https://github.com/HappyFaceFriend/HappyKit
GitHub - HappyFaceFriend/HappyKit
Contribute to HappyFaceFriend/HappyKit development by creating an account on GitHub.
github.com
유니티 개발을 하다보면 항상 싱글턴을 만들게 되는데, 사용하다보면 다양한 종류가 필요해집니다.
싱글턴이 하나의 인스턴스를 갖는다는 특징보단 전역적인 접근을 위해 사용하다보니, 여러 use case가 나오는 것 같습니다.
최근에는 RuntimeInitializeOnLoadMethod 를 활용해 싱글턴을 만들다보니 싱글턴을 직접 Instantiate 해야하는 경우가 많아, 그 함수를 추가해봤습니다.
Singleton
보통 생각하는 싱글턴으로, Monobehaviour가 아닌 C# 클래스에 사용할 수 있도록 만들었습니다. InitializeInstance를 호출하지않으면 assert 합니다.
LazySingleton
위 싱글턴에 InitializeInstance를 하지 않아도 첫 instance getter 호출 시 인스턴스를 생성하는 싱글턴입니다.
SingletonBehaviour
Monobehaviour에 활용하기 위한 싱글턴으로, 최초로 Awake가 실행된 오브젝트를 instance로 지정하고 DontDestroyOnLoad를 호출하는 방식입니다.
만약 객체가 두 개 이상이면 기존 것이 Destroy되고 가장 나중에 생성된 인스턴스가 싱글턴을 대체합니다.
SingletonBehaviourFixed
위와 동일하나, 객체가 두 개 이상이면 기존 것이 남고 새로 생긴 것이 Destroy 됩니다.
ScenegletonBehaviour
DontDestroyOnLoad가 실행된다는 점을 제외하면 SingletonBehaviour와 동일합니다. 씬에서만 전역적인 접근이 필요할 때 사용됩니다. Scenegleton은 제가 만든 단어입니다. ㅎㅎ
싱글턴들의 코드는 여기서 볼 수 있습니다.
https://github.com/HappyFaceFriend/HappyKit/tree/main/Assets/Scripts/HappyKit/BaseClasses/Singletons
'코드 전시관 > Unity' 카테고리의 다른 글
[Unity] NestedClassMirror - Nested Class를 인스펙터에서 사용하기 (1) | 2024.10.12 |
---|---|
[HappyKit] C# Extension Method를 활용한 Vector 변환 기능 (0) | 2024.05.04 |
[Unity] 원활한 카메라 활용을 위한 CameraToken (0) | 2023.12.29 |
[HappyTools] GameBootstrapper, SingletonBehaviour (0) | 2023.03.21 |
[HappyTools] StateMachineBase (0) | 2023.03.13 |