Post

Unity 1차 미니 프로젝트 - 2

해당 내용의 전부는 학원에서 배우는 것이기 때문에 공개가 어렵습니다.

해당 내용의 자세한 강의가 필요하신 분들은 이곳에서 확인하시면 됩니다.

2023-10-31 TIL

오늘은 어제의 문제점을 고쳐볼 생각입니다.

Desktop View

시간의 직관화 - 해결

기존 코드의 일부분입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class GameManager : MonoBehaviour
 {
     float time;

     void Update()
     {
        time += Time.deltaTime;
        timeTxt.text = time.ToString("N2");
        if (time > 30.0f)
        {
            endTxt.SetActive(true);
            Time.timeScale = 0.0f;
        }
    }

 }

초기화 되지 않은 time변수를 Time.deltaTime+=하여 시간을 나타내었습니다.

timeTxt라는 유니티 TextUIObject에 time를 표기합니다.

if (time > 30.0f)을 사용하여 time30.0f보다 클 때 Time.timeScale = 0.0f을 사용하여 게임의 시간을 멈추고 endTxt.SetActive(true)이용하여 끝 UI를 띄웁니다.


이로 인해 유저가 제한시간의 유무를 알 수가 없습니다.

Time.deltaTime이란 한프레임 당 실행하는 시간을 뜻합니다. 즉 80 프레임이면 1/80, 20 프레임이면 1/20 입니다. 이로써 서로 다른 프레임이라도 1초동안 +=한다면 1을 반환합니다.

해결한 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class GameManager : MonoBehaviour
 {
     float time = 60.0f;

     void Update()
    {
        time -= Time.deltaTime;
        timeTxt.text = time.ToString("N2");
        if (time < 0)
        {
            endTxt.SetActive(true);
            Time.timeScale = 0.0f;
        }
    }

 }

time변수를 60.0f로 초기화합니다. 해당 변수가 남은 시간을 의미합니다.


time -= Time.deltaTime을 이용하여 초당 1씩 빼줍니다.

time이 0보다 작아졌을 때 if (time < 0)이용하여 게임의 시간을 멈추고 endTxt.SetActive(true)이용하여 끝 UI를 띄웁니다.

Desktop View

코드 병합하기

이번에 GameManager를 만들고 합치다가 사건이 발생하였습니다.
그러다가 같은 이름의 같은 스크립트와 충돌이 일어났고 해당 상황을 해결하는 방법을 배웠습니다.

Desktop View

출처 : Visual Studio에서 병합 충돌 해결
https://learn.microsoft.com/ko-kr/visualstudio/version-control/git-resolve-conflicts?view=vs-2022


해당 상황 발생시 비쥬얼 스트디오로 열면 해당 화면으로 나옵니다.
사진의 상단 오른쪽 왼쪽에서 충돌부분을 선택할수 있습니다.
아니면 둘다 안쓰고 하단 결과창에서 수동으로 코드를 편집할수 있습니다.

오늘의 정리

아쉽게도 실제로 충돌이 일어났을 때 당황을 해서 해당 화면을 캡쳐하지 못한게 아쉽습니다.
실제로 충돌이 일어났을 때의 영상을 가지고 직접 풀이하며 다시 보면서 더 좋은 해결법을 찾아냈으면 좋았다고 생각이 듭니다.
또한 Time.deltaTime을 사용하여 프레임에 의한 행동의 변화를 제한할수 잇는 방법을 배울수 있었습니다.
충돌해결에 시간이 많이 걸려 많은 기능을 구현하지 못한것이 많이 아쉬운 오늘이였습니다.

Desktop View

This post is licensed under CC BY 4.0 by the author.