TIL

2024 08 27 TIL

noc777 2024. 8. 27. 16:17

2-10 최고 점수 구하기

 

PlayerPrefs 는 키워드로 데이터를 보관할 수 있다

PlayerPrefs.SetFloat , PlayerPrefs.SetString  는 데이터를 저장할때 쓰인다

PlayerPrefs.SetFloat("bestscore",숫자값);

PlayerPrefs.SetString("bestscore",문자열);

 

데이터를 불러올때는

숫자값 = PlayerPrefs.GetFloat("bestscore");

문자열 = PlayerPrefs.GetString("bestscore");

처럼 불러올 수 있고

 

키워드가 있는지 확인할땐

PlayerPrefs.HasKey("bestscore")     true 일땐 있고 false 일땐 없다

 

데이터를 모두 지우려면

PlayerPrefs.DeleteAll();

 

 

게임오버되었을때 최고점수가 있을때  만약 최고 점수가 현재 점수보다 작을땐 현재 점수를 최고 점수에 저장한다.

코드의 양이 많을 땐 찾기 힘들테니 나도 주석을 만들어보는 습관을 들이는게 좋을 것 같다.

 

이어서 최고 점수가 게임오버 화면에 표시되게 하기 위해 BestScore 텍스트 오브젝트를 불러와준다

 

만약 현재 점수가 최고 점수보다 크다면 BestScore에 time 값을 저장하고 출력하고

아니라면  이미 저장된 최고 점수 값을 출력한다.

그리고 최고 점수가 없다면 새로 time값을 BestScore에 저장하고 출력하게 되는 조건문이다.

 

영상을 보면서 만들었을때 처음엔 BestScore를 BestScorer로 오타를 내서 현재점수가 무조건 최고점수에 저장되는 기이한 코드를 만들었다.

 

영상에서는 이 키워드가 길수록 오타의 위험이 있기에

이런식으로 새로 변수를 만들어 키워드에 저장하되 불러올땐 변수를 이용하는 것을 추천했다

변수를 새로 선언하여 코드를 다음처럼 조금 수정하였다.

 

2-11 풍선 애니메이션

 

풍선이 터지는 애니메이션을 만들어야한다.

 

Project 창의 assets-> animations 폴더에서 balloonidle을 더블클릭

그러고 Balloon 오브젝트를 클릭하고 애니메이션 창에서 balloonidle을 클릭 후 새 애니메이션을 만든다. 이름은balloondie 로

지어줬다.

 

녹화버튼을 누르고 프레임을 20으로 옮긴 후 색을 255 0 0  125  Scale 값을 x y 2  2 로 맞춘후 녹화버튼을 껏다

이후 Loop time 기능을 꺼준다.

 

animaitions 폴더 안의 Balloon 파일을 클릭해주면 

이런 창이 나오는데  원래는 entry와 Balloonidle만 연결되어 있었다.  Ballonidle을 우클릭후 Make transition을 누르면 화살표가 나오는데 이 화살표를 그림처럼 연결해주면된다. 이후 좌측 상단의 parameters을 누르고 + 버튼-> bool을 클릭 새로 isDie를 만들어준다.

 

그림의 Ballonidle에서 Ballondie로 넘어가는 트랜지션을 isDie가 true 일때 넘어가도록 할것이다.

먼저Conditions 의 +버튼을 눌러주면 생성된 parameter가 true일때라는 조건이 생긴다. 그리고 위의 Has Exit Time(언제든 다음단계로 넘어가는)  기능을 꺼주고   Transition Duratior 와 Offset을 0으로 만들어준다.

 

gamemanager 스크립트로 돌아가서 

unity의 애니메이션 기능을 불러오기 위해 Animator 를 새로 써준다.

 

그리고 gameover()에 anim.SetBool("isDie",true);  

게임이 끝났을때 isDie를 true로 만들어주면서 트랜지션이 실행하도록 만들어준다

gamemanager 오브젝트에 있는 animator 칸에 balloon 오브젝트를 넣어주고 실행해도 풍선이 제대로 터지지 않는다.

 

게임오버가 되었을때 바로 시간이 정지되기 때문에 애니메이션이 실행되지 않기에 gameover에 있는 Time.timeScale=0.0f; 를 따로 TimeStop()함수에 빼주었다.

그리고 Time.timeScale=0.0f; 가 있던 자리에 Invoke를 써주어 게임이 종료될때 유예시간을 만든다.

 

마지막으로 떨어지는 Square 오브젝트들이 게임이 끝날때까지 사라지지 않는 것을 없애는 숙제를 부여받았다.

 

나는 Square의 Update 창에  Position 의 y값이 -6 (화면을 벗어났을때)을 넘겼을때 오브젝트를 제거하는 코드를 만들었다.

 

해서 2주차 강의까지 들었다 아직 익숙하게 코드를 작성하기 힘들것 같아 1,2주차 강의 영상을 여러번 돌려봐야 할 것 같다.

'TIL' 카테고리의 다른 글

2024 08 29 TIL  (0) 2024.08.29
2024 08 28 TIL  (7) 2024.08.28
2024-08-26 TIL  (0) 2024.08.26
2024 08 24  (0) 2024.08.24
2024 08 23 TIL  (0) 2024.08.23