꽃미남 프로그래머 김포프가 창립한 탑 프로그래머 양성 교육 기관 POCU 아카데미 오픈!
절찬리에 수강생 모집 중!
프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.
Posted by Junios

크런치 타임에 겹쳐서 올려야 하는데

못 올리고 아는게 없어서 공개 할 내용이 그닥 없네요 ㅠ.ㅠ

넘 초보 내용뿐이 그래서 이번에 올리는것도 초보적인 싱글턴 클래스 입니다.

C++를 사용하면 많이들 쓰실테고 현재는 Unity3D를 사용중인데 

다덜 싱글턴 클래스를 상속이 아니라 만들어서 사용들 하시는거 같아서 사용해서 싱글턴이 되도록 만든 간단한 클래스입니다.


using System;

public class Singleton<T> where T : class, new()
{
	public static T Instance
	{
		get;
		private set;
	}

	static Singleton()
	{
		if (Singleton<T>.Instance == null)
		{
			Singleton<T>.Instance = new T();
		}
	}

	public virtual void Clear()
	{
		Singleton<T>.Instance = null;	
		Singleton<T>.Instance = new T();
	}
}


사용법은 아래와 같이


/*예제*/
class Sample : Singleton<Sample>

별거 없지만 도움이 되시길 바라며.


다음에는 더 좋은 내용을 올릴께요. ㅠ.ㅠ

댓글을 달아 주세요

  1. FreeCODE 2013.01.02 18:00  댓글주소  수정/삭제  댓글쓰기

    날짜가..;;

    • Favicon of https://gamedevforever.com Junios 2013.01.03 09:12 신고  댓글주소  수정/삭제

      미래에서 온 제가 쓴건가-_-;;

      그건 아니고요. 예약으로 걸어 놓은 시간은 안 보이려고 임의로 걸어놨는데 그 시간이 기억 되는군요 -_- ㄷㄷ

  2. Favicon of http://bluekms21.blog.me 크로스 2013.01.18 10:50  댓글주소  수정/삭제  댓글쓰기

    좋은 팁 잘 봤습니다만 몇가지 질문이 있는데요

    1) MSDN에는 멀티스레드를 위한 싱글톤 클래스를 만드는데 sealed 키워드를 쓰더군요...
    그래서 어차피 상속이 안되던데 유니티라면 C#모노니까 상관없으려나요 ~_~;;

    2) t와 T를 혼용하셨는데.. 이건 단순오타인가요? 아니면 C++에 있는 상속관계에 있는 다른 클래스의 operator를 지원해주기 위한 또다른 템플릿인가요??

    • Favicon of https://gamedevforever.com Junios 2013.01.29 10:46 신고  댓글주소  수정/삭제

      이제야 보내요. 우선 멀티 쓰레드용이 아닌 그냥 Unity3D에서 편하게 가져다 쓰라고 그냥 써놓은겁니다.
      T->t는 오타입니다. 에디터상에서T를 대문자로 입력해도 소문자 t로 바뀌네요 -_-; 수정해놓도록 하겠습니다.

  3. Favicon of http://blog.naver.com/conaman conaman 2013.01.18 10:51  댓글주소  수정/삭제  댓글쓰기

    C#의 특징상 다중 상속이 안 되기 때문에 이렇게 Singleton을 상속으로 구현하면 상속의 한계가 생기는 문제도 있더라구요~ 참고하세요~^^

    • Favicon of http://bluekms21.blog.me 크로스 2013.01.18 11:03  댓글주소  수정/삭제

      맞아요..ㅋ
      인터페이스로 상속시키고 구현과 정의를 분리해서 좀더 구조적인 프로그래밍을... 하면 좋지만 당장 눈앞의 생산성에 타협하는게 훨씬 나을때도 많더군요...ㅋ
      아 다중상속 좋은데.. 쩝..

  4. Sanoke 2013.01.31 14:19  댓글주소  수정/삭제  댓글쓰기

    본문에 Unity3D가 언급되어 있는데, Unity3D MonoBehaviour를 상속받는 클래스에서는 이 방법은 좋지 않습니다.

    죽지 않는 게임오브젝트를 만들고 컴포넌트를 참조해서 쓰면 MonoBehaviour 상속 클래스도 싱글턴처럼 비슷하게 사용할 수 있습니다.

  5. hova 2013.02.18 13:46  댓글주소  수정/삭제  댓글쓰기

    Unity 에서는 Mono 는 다른 방식으로 싱글톤 만들어 줘야죠~~~

  6. hmm 2013.03.20 14:03  댓글주소  수정/삭제  댓글쓰기

    Singleton은 외부에서 객체를 생성할 수 없는 것을 보장해야 하는데,
    저런 식으로 구현하면 간단히 new Sample() 만으로 새로운 객체가 만들어지는걸요?

  7. 나그네 2013.12.05 17:59  댓글주소  수정/삭제  댓글쓰기

    http://wiki.unity3d.com/index.php?title=Singleton#Generic_Based_Singleton_for_MonoBehaviours

    참고하세요.