Notice
Recent Posts
Recent Comments
Link
빙수달 게임 개발 노트
Singleton패턴을 사용한 Managers 생성 본문
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Managers : MonoBehaviour
{
static Managers s_instance; // 유일성 보장
static Managers Instance { get { Init(); return s_instance; } } // 유일한 매니저를 갖고온다
InputManager _input = new InputManager();
ResourceManager _resource = new ResourceManager();
public static InputManager Input { get { return Instance._input; } }
public static ResourceManager Resource { get { return Instance._resource; } }
void Start()
{
Init();
}
void Update()
{
_input.OnUpdate();
}
static void Init()
{
GameObject go = GameObject.Find("@Managers");
if (s_instance == null)
{
go = new GameObject { name = "@Managers" };
go.AddComponent<Managers>();
}
DontDestroyOnLoad(go); // 씬이 바뀌어도 파괴되지 않도록 설정
s_instance = go.GetComponent<Managers>();
}
}
- s_instance : Managers의 정적(전역) 인스턴스, 유일성을 보장한다.
- Instance 프로퍼티 : 필요할 때 자동으로 Init() 호출해서 싱글톤 초기화도 해주고 반환도 한다.
- 실제 Input과 Resource 관련 기능을 하는 하위 매니저들을 포함시킨다.
- 각 매니저들을 Managers.Input, Managers.Resource처럼 정적으로 접근 가능하다.
초급 개발자에게는 적합한 구조지만, 전역 접근이 가능하다는 건 곧 모든 객체가 Managers에 의존할 수 있기에 대규모 프로젝트 시, 유지보수가 어려울 수 있다.
'Dev Log : Game > 유니티(Unity)' 카테고리의 다른 글
| [Unity] 인벤토리 구현 (0) | 2025.01.20 |
|---|