-
GameManager(싱글톤) + CanvasGroup으로 UI 컨트롤Unity/제로부터 구현 2023. 11. 22. 20:06728x90
*틀린 점을 발견하신다면 꼭 댓글 남겨주시면 감사하겠습니다😢
- 오늘의 구현
1.GameManager 구현 ( 싱글톤)
2.CanvasGroup component를 이용한 GameOver UI 만들기 + Time out
싱글톤(Singleton) : 소프트웨어 디자인 패턴중 하나로, 단 하나의 인스턴스만을 사용하여 데이터나 리소스를 관리하고 공유할 수 있도록 하는 것입니다.
1.Gamemanager (Singleton)
public class GameManager : MonoBehaviour { private static GameManager instance; private void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } } public static GameManager Instance { get { return instance; } } // 추가적인 기능 구현 }
- 클래스 내에 유일하게 인스턴스를 저장하기 위한 정적 변수 생성.
- 해당 클래스의 인스턴스는 유일해야 하기 때문에 인스턴스의 유무를 확인하고, 현재 객체를 instance 변수에 할당하여 싱글톤 인스턴스를 생성해 줍니다.
- DontDestroyOnLoad(gameObject) :씬 전환 시에도 특정 게임 오브젝트를 파괴하지 않고 유지하기 위해 사용됩니다. 이 함수를 호출한 게임 오브젝트는 현재 씬에서 파괴되지 않고 다른 씬으로 이동할 때도 유지됩니다.
- Instance 는 GameManager의 유일한 인스턴스에 접근하기위한 속성으로 get으로 instance를 읽을수는 있지만 set이 없어 해당 인스턴스를 수정하거나 변경할 수 없습니다.
2.CanvasGroup component
CanvasGroup 컴포넌트는 UI 요소의 부모 오브젝트인 Canvas에 추가하여 사용됩니다.
CanvasGroup을 통해 UI 요소의 투명도, 상호작용 가능 여부, Raycast 이벤트의 차단 여부 등을 동적으로 제어할 수 있습니다.
public CanvasGroup gameOverCanvas; IEnumerator GameOver() { DestroyRain(); gameOver = true; gameOverCanvas.gameObject.SetActive(true); float percent = 0; while (percent < fadeDuration) { percent += Time.deltaTime; float interpolation = percent / fadeDuration; gameOverCanvas.alpha = Mathf.Lerp(0f, 1f, interpolation); yield return null; } gameOverCanvas.alpha = 1; }
해당 게임이 Game Over 했을 때 , 게임상에 존재하는 Rain 오브젝트를 모두 제거해 준뒤, gameOver 메세지를 표시해 줍니다.
GameOver 메세지는 CanvasGroup의 alpha 값을 이용해 페이드 인 됩니다.
`yield return null` : 현재 프레임이 완료될 때까지 일시 중단하고 다음 프레임에서 다시 실행됩니다
728x90'Unity > 제로부터 구현' 카테고리의 다른 글
1인칭 시점 구현하기 + 이동 (0) 2023.11.30 짝 맞추기 카드 만들기, 카드 섞기, 리소스를 사용한 스프라이트 설정 (0) 2023.11.28 3D 플레이어 이동 구현(마우스로 방향전환, 키보드로 방향전환) (1) 2023.11.24 마우스 이동에 따른 물체 옮기기, PlayerPrefs를 이용한 최고 점수 저장 밑 불러오기 (0) 2023.11.23 2D 캐릭터 이동 + 카메라 앵글을 이용한 이동 반경 제한 (0) 2023.11.21