프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
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

    참고하세요.