Posted in: Unity, 메서드 & 팁 정리

(유니티) 게임 매니저가 쓰이는 이유


  유니티에서 ‘게임 매니저’ 스크립트를 만들면 이미지가 자동으로 톱니바퀴로 바뀐다. 이건 게임 설정을 의미하는 것과 비슷한 아이콘이다. 그 만큼 많은 사람들이 사용하기 때문에 유니티에서 자동으로 지원하는 것이다.


왜 사용할까?

  파란색 박스를 노란색 목표지점까지 옮기는 ‘소코반’ 게임을 만들고 있다고 치자.

  해당 게임에서 승리조건은 파란색 박스를 모두 노란색 목표지점까지 옮기는 것이다. 그렇다면 효율적으로 승리조건을 알아내는 방법은?

  파란색 박스(ItemBox)의 상태를 모두 알아낼 수 있는 게임 오브젝트와 스크립트를 만들어서 파란색 박스가 모두 목표지점까지 이동했는지 알아보는 것이다.

/************/
/*게임 매니저*/
/************/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    // ItemBox 게임 오브젝트를 넣기 위함
    public ItemBox[] itemBoxes;
    // 게임 승리 조건을 주기 위함
    public bool isGameOver;


    void Start()
    {
    	// 게임을 처음 시작했을 시 체크해제
        isGameOver = false;
    }


    void Update()
    {
        if(isGameOver == true)
        {
            // 게임 승리했을 시 리턴
            return;
        }

        int count = 0;
        for(int i = 0; i < 3; ++i)
        {
            // ItemBox 마다 겹쳐졌는지 확인 함
            if(itemBoxes[i].isOveraped == true)
            {
                count++;
            }
        }
		
        // 모든 ItemBox가 겹쳐지면 게임승리 체크
        if(count >= 3)
        {
            Debug.Log("게임 승리!");
            isGameOver = true;
        }
    }
}

  코드를 보면 ItemBox를 배열로 만들어서 모든 아이템 박스를 받아올 수 있게 만들어놓았고

게임 승리 조건 달성 시 isGameOver 변수가 true로 바뀌는 조건을 주었다.

  즉, 위와 같이 ItemBox 가 모두 목표 지점까지 이동했을 시 isGameOver 가 true 가 되면서

  ‘GameManager’ 게임 오브젝트의 스크립트(GameManager) IsGameOver 변수가 체크(true) 되었다.

  이러한 방식으로 파란색 박스들이 목표지점까지 도달한 것을 게임 매니저를 통해 알아내었다.


  위와같이 게임 매니저는 스크립트와 게임 오브젝트를 활용해 게임의 메인 흐름(ex. 게임 클리어)을 조절하는 개발 방법이다.


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다