2024-04-16 TIL

이재형·2024년 4월 16일
0

구현 내용 정리

1. 게임 클리어 여부에 따른 점수판 구현

● 시간Text 깜빡이게 구현

public GameObject ResultImg; // 점수판
public Text scoreText; // 점수
public Text timeText;  // 남은 시간
public Text ClearText; // 클리어 텍스트

// 게임 종료 후 점수판
    public void ResultText(int number)
    {
        // 점수판 활성화
        ResultImg.SetActive(true);
        // number == 0 즉 게임 클리어했을 경우
        if (number == 0)
        {
            ClearText.text = "Game Clear!!!";
            float TT = 30 - time;
            timeText.text = TT.ToString("N0");
        }
        // 그 외는 게임 오버
        else
        {
            ClearText.text = "Game Over...";
            timeText.text = "X";
        }
        // 점수는 기본 1000에 매칭 횟수의 2배를 뺌
        int ST = 1000 - matchCount * 2;
        scoreText.text = ST.ToString();
    }
    
    if(CardCount == 0)
            {
                ResultText(0);
                Time.timeScale = 0f;
            }

메서드 ResultText의 매개변수 number는 클리어 여부를 나타내며 30초가 지나면 게임이 오버가 되었기 때문에 1를 주고 모든 카드를 다 제거 즉, CardCount가 0이 되면 매개변수를 0으로 저장하여 ClearText의 내용을 "Game Clear!!!"로 오버시 에는 "Game Over..."를 출력하게 함

● 클리어 여부에 따른 점수판 결과 사진

게임 클리어 사진


게임 오버 사진


2. 버튼 기능 추가

public GameObject StageImg;

    // 스테이지 선택지를 활성화 시키는 기능
    public void StageSelect()
    {
        StageImg.SetActive(true);
    }

    // 게임 재시작, 시작할 때 씬 이동
    public void GameStart()
    {
        SceneManager.LoadScene("MainScene");
    }

    // Start씬에서 게임 시작버튼 기능
    public void GameReStart()
    {
        SceneManager.LoadScene("MainScene");
        AudioManager.instance.ChangeMusic(0);
    }

    // 처음 게임 씬으로 이동하는 기능
    public void Lobby()
    {
        SceneManager.LoadScene("StartScene");
        AudioManager.instance.ChangeMusic(0);
    }

게임이 끝났을 때 로비로 가는 버튼과 재시작하는 버튼을 만들고 기능을 추가하였음

로비, 재시작 버튼 사진


구현 변경 사항

1. 게임 시간의 절반이 지나면 텍스트 빨강, 하양 색 반복 변경

IEnumerator TextChange()
    {
        // 글씨(하양 => 빨강 / 빨강 => 하양)으로 계속 변경
        while (true)
        {
            // 15초가 지나면 텍스트 반복 변경 
            if (time > 15)
            {
                TimeTxt.color = new Color(255, 0, 0);
                yield return new WaitForSeconds(0.5f);
                TimeTxt.color = new Color(255, 255, 255);
                yield return new WaitForSeconds(0.5f);
            }
            // 지나지 않으면 변경 X
            else
            {
                yield return 0;
            }
        }
    }

2. 사운드 변경

AudioSource audioSource;
    public AudioClip[] clip;
    private bool soundCheck = true;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);          //씬을 이동할때 해당 오브젝트를 파괴하지 않고 그대로 씬을 넘어가는 코드
        }
        else
        {
            Destroy(gameObject);                    //싱글톤이 2개가 존재할때 instance가 이미 있으므로 나머지를 파괴하여 하나만 존재케하는 코드
        }
        instance.soundCheck = true;
    }

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
        audioSource.clip = clip[0];
        audioSource.Play();
    }

    private void Update()
    {
        ChangeMusic(1);
    }

    public void ChangeMusic(int number)
    {
        if (number==0)
        {
            audioSource.clip = clip[0];
            audioSource.Play();
        }

        if(Gamemanager.instance?.time > 15.0f && soundCheck && number==1)
        {
            audioSource.clip = clip[1];
            audioSource.Play();
            soundCheck = false;
        }
    }

정리

진행 사항

1. 깃허브를 이용하여 팀원들과 프로젝트 협업 진행

2. 어제 개발할 내용을 통합 프로젝트로 이동 후 구현 및 버그 해결

해결 못한 문제

1. 재시작 버튼 클릭 후 게임의 시간이 15초가 지나면 음악이 변경되지 않아서 해결해야함

문제점

1. 프로젝트 공유를 할 때 충돌이 발생하여 문제 해결이 어렵고 해결 못하는 문제 발생 시 프로젝트를 백업시켜야함

profile
한국사람

0개의 댓글