Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- xml unity
- 포지션 파라미터
- flutter folder
- C# memorybarrior
- Unity3d
- 다트기초
- optional prameter
- 플러터
- c#
- position parameter
- OPCUA
- unity icon
- 유니티최적화
- 네임드 파라미터
- 싱글톤
- Unity
- unity 아이콘 깨짐
- 플러터프로젝트
- 유니티
- Unity 4k 아이콘 깨짐
- memorymangement
- 폴더구성
- named parameter
- 플러터폴더
- Flutter
- 4KUnity
- MemoryBarrier
- XR
- 메모리배리어
- Csharp
Archives
- Today
- Total
배 타다 개발자
[유니티] 실전 싱글톤 프로젝트 세팅 본문
실전 싱글톤 프로젝트 세팅
→ 예시로, "@ Managers" 라는 게임오브젝트에 Managers 스크립트 컴포넌트로 싱글턴 프로젝트를 셋팅해보도록 하겠습니다.
씬에 배치할 스크립트가 꼭 실체가 있는 사물일 필요는 없다.
@Managers 게임오브젝트는 씬 상에 눈에 보이지 않는다. 그러나 매우 중요한 역할을 한다.
씬을 실행하면 DonDestroyOnLoad 안에 매니저 오브젝트로 싱글톤이 생성된다. 이 매니저가 프로젝트가 진행되면서 발생하는
다른 게임오브젝트에서 Manager에 간단하게 접근해보자.
씬이 플레이 되면 자동적으로 실행되는 Start 함수에 static으로 선언되어 전역에서 사용될 수 있는 Instance를 가져오면 Manager 와 상호작용하는 싱글턴 패턴이 만들어진다.
프로퍼티를 사용하고, 인스턴스가 생성되어 있지 않으면 자동으로 생성해주는 Init()함수르 ㄹ이용해서 인터페이스를 좀더 간단하게 만들어 줄 수도 있다.
이후엔, 다른 스크립트에서 Manager.UI, Managers.Input 등으로 깔끔하게 접근할 수있다
Code
public class Managers : MonoBehaviour
{
//static으로 전역에서 유일성 보장된 instance
static Managers s_Instance;
public static Managers Instance { get { Init(); return s_Instance; } } // 유일한 매니저를 가지고 오는 프로퍼티
private void Start()
{
Init();
}
// 전역으로 되어있는 유일한 인스턴스를 가져오자.
static void init()
{
// 인스턴스가 비어있다면
if (s_Instance == null)
{
// 게임오브젝트의 이름을 통해서 접근
GameObject go = GameObject.Find("@Managers");
// go 라는
if( go == null)
{
// 싱글톤 -> 하나의 Manager만을 가지고 싶다 -> 자기자신을 인스턴드에 할당
go = new GameObject { name = "@Managers" };
go.AddComponent<Managers>();
}
// 왠만하여서는(심지어 씬이동시에도) 삭제되지 않음
DontDestroyOnLoad(go);
// Intance에 유일한 Manager Script 장착.
s_Instance = go.GetComponent<Managers>();
}
}
}
'Graphics > Unity 3D' 카테고리의 다른 글
[Unity] Raycasting (0) | 2021.12.09 |
---|---|
유니티로 GIS 구현하기 (0) | 2021.11.29 |
[유니티] 프리팹을 씬에 효과적으로 로딩하는 방법 - Resource Manager (0) | 2021.10.27 |
[유니티3D] 홀로렌즈 없이 홀로렌즈 앱 만들기 - 프로젝트환경 세팅 (0) | 2021.10.18 |
[유니티 ]키를 입력을 관리하는 InputManager (0) | 2021.10.17 |