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 |
Tags
- Hp바
- 2D슈팅게임
- pccp 기출문제 3번
- 유니티
- Animation State Machine
- 오브젝트 풀링
- Hpbar
- Blend Type
- heap tree
- Lv2
- Unity
- LayerMark
- Back Tracking
- 깊이 우선 탐색
- 너비 우선 탐색
- pccp 기출문제 2번
- 프로그래머스
- Object Poling
- 플레이어 이동
- 충돌위험 찾기
- pccp 기출문제 1번
- Object Pooling
- raycasting
- C#
- Scrooling
- Algorithm
- Ainimation Blending
- CSharp #자료구조
- 플레이어 방향전환
- ASTAR
Archives
- Today
- Total
주녘공부일지
[Unity] 싱글톤 패턴 (Singleton Pattern) 본문
싱글톤 패턴 (Singleton Pattern) 이란?
특정 클래스의 객체(instance)가 오직 하나만 존재하기 원할 때 사용하는 디자인 패턴으로 최초 한번만 메모리를 할당하고 메모리에 인스턴스를 만들어 재사용하는 디자인 패턴
- 즉, 오직 한 개의 클래스 인스턴스만 갖도록 보장하며, 전역 접근점은 제공하는 디자인 패턴
1) 싱글톤 패턴의 장점
- 사용하지 않으면 인스턴스를 생성하지 않으며, 고정된 메모리 영역을 사용하므로 메모리 낭비 방지가 가능
- 다른 클래스의 인스턴스들이 데이터를 공유하기 편리한 등의 쉬운 접근성
2) 싱글톤 패턴의 단점 ( 전역 변수 )
- 코드 이해 난이도를 높일 수 있음 ( 참조가 너무 많아 버그 추적이 어려움, 등 )
- 인스턴스들 간에 결합도가 높아짐 ( 객체 지향 설계 원칙에 어긋남 )
- 전역 변수는 멀티스레딩 같은 동시성 프로그래밍에 알맞지 않음
-> 멀티 쓰레드 환경에서 동기화처리를 안하면 문제가 발생할 수 있음 ( 코드 성능 저하 )
싱글톤 패턴을 적용한 예제 ( Class Managers )
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Managers : MonoBehaviour
{
static Managers s_Instance; // 유일성 보장
public static Managers Instance { get{ Init(); return s_Instance; } }
void Start()
{
Init();
}
static void Init()
{
if(s_Instance == null)
{
GameObject go = GameObject.Find("@Managers");
if(go == null)
{
go = new GameObject { name = "@Managers" };
go.AddComponent<Managers>();
}
DontDestroyOnLoad(go);
s_Instance = go.GetComponent<Managers>();
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
void Start()
{
Managers mg = Managers.Instance;
}
}
'GameDevelopment > [Unity] Pattern, Etc' 카테고리의 다른 글
[Unity] 오브젝트 풀링 (Object Pooling) (0) | 2022.02.01 |
---|