낑깡의 게임 프로그래밍 도전기

Unity C# 스태틱과 싱글톤, 인터페이스 본문

Unity C#

Unity C# 스태틱과 싱글톤, 인터페이스

낑깡겜플밍 2023. 9. 25. 21:16
반응형

C# 배열의 유형 : 정적배열, 가변배열

 

정적배열은 크기가 미리 정해져있어야해서 사이즈를 미리 정해 주어야 함

array =  new int[5]

 

스태틱은 인스턴스변수( 스태틱이 안 붙은 보통 많이쓰는 일반 변수, 각자 독립적인 공간을 가진 것)와 상관없이 정적인 변수로 클래스의 속성이다

어디서든 바로쓸 수 있는 디버그로그가 그 예다

디버그로그는 오브젝트타입에 스태틱이라니!

벡터3도 그 예임. 얘도 스태틱이라니!

 

*유니티는 늦게만든 스타트부터 먼저 실행됨

 

void Awake() 는 스타트보다 먼저 호출되는 놈

 

싱글턴 패턴을 막쓰면 단일책임원칙에 위배가 된데 왜??

 

싱글톤 빌드업
씬이 바껴도 파괴되지않게 하는거
사운드매니저 싱글톤 예시
게임매니저와 사운드매니저 싱클톤 비교

 

그래서 사운드와 게임매니저 싱글톤 상속한번 해보자. 그냥하면 사라진다 ㅜ

이렇게 템플릿을 통한 확장을 이용해 각 각 스태틱 인스탠스를 가지게 해준다.

 

그런데 혹시나 타입에 GameObject를 실수로 넣으면 게임오브젝트를 하나만 쓸수있게 되버리는 오류가 ㅠㅠ

그래서 그걸 방지하기위해

T의 타입을 singleton 상속받는 애들만으로 정해 준다. 그럼 다른건 못쓰게 된다.
(T)this
이 경우 부모의 Awake가 씹혀버린다.
그래서 부모(base)를 먼저 호출해야한다. 그러기위해서 protective로 넘겨줘야 호출가능

 

최종

 

가상함수 사용 시

 

인터페이스, 실체화(리얼라이즈)는 점선

인터페이스는 인터페이스 스크립트하나 만들고 그 안에다가 몰아서 만들어도 괜찮다.

 

그 기능을 가지는 애들은 꼭 기능 구현을 해 줘야한다.

 

인터페이스는 기본이 퍼블릭

인터페이스는 변수 사용이 안되는데 변수처럼 쓰려면 프로퍼티를 사용.

당연히 약속으로서 기능 구현을 꼭 해줘야함

반응형