반응형

이번에는 Game Manager를 만들어서 게임전체를 컨트롤 하고 점수를 올리는 프로그램을 짜보겠습니다

먼저 빈게임오브젝트를 만들고 GameManager라고 합니다



GameManager스크립트를 만듭니다


Player스크립트를 선택하고 수정합니다


canShoot = false로 수정합니다


can Shoot 체크 해제 합니다




SpawnManager스크립트를 수정합니다


SpawnManager스크립트를 SoundManager스크립트 처럼 인스턴스 스크립트를 추가 합니다


SpawnManager오브젝트를 선택하고 is Spawn 을 체크 해제한다


GameManager스크립트를 GameManager오브젝트에 붙힙니다



그리고  Hierarchy창에서 마우스 오른쪽 버튼을 눌러 UI -> Text 를 생성합니다





생성된 Canvas -> Canvas Scaler를 그림과 같이 Scale With Screen Size를 선택합니다


Scale With Screen Size를 선택 하고 Reference Resolution 을 200 320 으로 바끕니다


Text를 선택하여 그림과 같이 속성을 바꿉니다


Text가 화면에 잘보일수있게 그림과같이 설정되었습니다.Text와 위치는 사용자가 보기 좋은 방향으로 위치와 색깔을 수정하셔도 됩니다



그림과 같이 GameManager 스크립트를 작성합니다

3초후 게임이 실행되는 Invoke 함수를 넣고 AddScore 함수를 넣어 적을 격파 하였을때 점수를 올리는 스크립트를 짭니다







GameManager를 선택하고 Text를 붙힙니다



using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;


public class GameManager : MonoBehaviour {


    GameObject player;


    int score = 0;


    public Text scoreText;


    public static GameManager instance;


    private void Awake()

    {

        if (GameManager.instance == null)

        {

            GameManager.instance = this;

        }

    }

    void Start ()

    {

        player = GameObject.FindGameObjectWithTag("Player");


        Invoke("StartGame", 3f);//3초후 StarGame실행

}


    void StartGame()

    {

        player.GetComponent<Player>().canShoot = true;


        SpawnManager.instance.isSpawn = true;

        

    }


    public void AddScore(int enemyScore)//적을 격파할때마다 점수가 올라가는 함수

    {

        score += enemyScore;

        scoreText.text = "Score:" + score;

    }

void Update () {

}

}





Enemy 스크립트를 선택하고 수정합니다


그림과 같이 Enemy스크립트를 수정합니다




게임을 실행하여 3초후 총알이 발사되고 적이나오는것을 확인하고 적을 격파하였을때 점수가 올라가는 것을 확인합니다





반응형

+ Recent posts