Pv_log

Programming Simple Functionality: Unit 5 - User Interface) Lesson 5.2 - Keeping Score 본문

Unity Learn 번역/Pathway: Junior Programmer

Programming Simple Functionality: Unit 5 - User Interface) Lesson 5.2 - Keeping Score

Priv 2021. 7. 24. 18:14

출처


 

 

1. 서언


(영상: 링크 참조)


 


 

2.  스크린에 스코어 텍스트를 추가하고 위치 설정하기

스코어를 스크린 위에 표시하기 위해서는, 먼저 여러분의 첫 번째 UI 요소를 추가해야 합니다.

 


(영상: 링크 참조)


 

1. Hierarchy에서, Create > UI > TextMeshPro text를 클릭하고, 팝업 창이 하나 표시되면 Import TMP Essentials 버튼을 클릭해주세요.

2. 새 오브젝트 이름을 "Score Text"로 바꿔주시고, Scene 뷰에서 canvas가 보이도록 줌 아웃해주세요.

3. 앵커 포인트(Anchor Point)를 바꿔서 좌측 상단 모서리(top-left corner)에 고정되도록 만들어주세요.

4. inspector 창에서, Pos XPos Y 값을 바꿔서 Score Text 오브젝트가 좌측 상단 모서리에 위치하도록 만들어주세요.

 


 

3. 스코어 텍스트의 속성 수정하기

이제 scene에 기본적인 텍스트가 출력되고, 배치도 끝났으므로, 속성들을 수정하여 텍스트가 보기 좋고 올바르게 출력될 수 있도록 만들어야 합니다.

 


(영상: 링크 참조)


 

1. 텍스트를 "Score:"로 바꿔주세요.

2. Font Asset, Style, Size, Vertex color 값들을 여러분의 배경화면에 어울리도록 설정해주세요.

 


 

4. 스코어 텍스트 및 변수 초기화

UI에 점수를 표시하기에 적합한 위치가 있지만, 현재 아무것도 표시되고 있지 않습니다! 플레이어가 그들의 점수를 파악할 수 있도록 만들기 위해서 score 변수를 표시하는 UI가 필요합니다.

 


(영상: 링크 참조)


 

1. GameManager.cs 상단에 "using TMPro;"를 추가해주세요.

2. public TextMeshProUGUI scoreText를 새로 선언하고, inspector 창에서 변수에 값을 할당해주세요.

3. private int score 변수를 새로 생성하시고 Start() 안에 score = 0;으로 초기화해주세요.

4. Start()에 scoreText.text = "Score: " + score; 도 추가해주세요.

 

 


 

5. UpdateScore 메서드 새로 생성하기

스코어 텍스트가 score 변수를 통해 제대로 표시는 되고 있지만, 값이 갱신되지 않습니다. UI 상에 표시해줄 포인트를 증가시키는 새로운 함수를 작성해주어야 합니다.

 


(영상: 링크 참조)


 

1. int scoreToAdd 매개변수를 필요로 하는 private void UpdateScore 메서드를 새로 생성해주세요.

2. scoreText.text = "Score: " + score; 코드를 잘라내어 새로 생성한 메서드에 붙어 넣으신 뒤, Start()에서 UpdateScore(0)으로 호출해주세요.

3. UpdateScore()에서, score += scoreToAdd;를 추가해 스코어 값이 증가하도록 만들어주세요.

4. spawnTarget() 함수 안에서 UpdateScore(5)를 호출해주세요.

 

 


 

6. 타깃이 파괴되었을 때 스코어 올리기

이제 스코어를 갱신하는 메서드를 구현했으므로, 타깃이 파괴될 때마다 target 스크립트를 호출하도록 만들어야 합니다.

 


(영상: 링크 참조)


 

1. GameManager.cs에서 UpdateScore 메서드를 public으로 만들어주세요.

2. Target.cs에서 private GameManager gameManager;로 레퍼런스를 만들어주세요.

3. Start() 안에서 Find() 메서드를 사용해 GameManager를 초기화해주세요.

4. 타깃이 파괴되었을 때, UpdateScore(5);를 호출하도록 만들고, SpawnTarget()에서 메서드를 호출하는 부분은 삭제해주세요.

 

 


 

7. 각 타깃에 포인트 값 할당하기

타깃들을 클릭했을 때 스코어가 올라가는 것이 갱신되고 있지만, 각 타깃들마다 서로 다른 값이 적용되도록 만들고 싶습니다. good 오브젝트들은 종류에 따라 포인트 값이 서로 달라야 하며, bad 오브젝트는 포인트를 차감시켜야 합니다.

 


(영상: 링크 참조)


 

1. Target.cs에서 public int pointValue 변수를 새로 선언해주세요.

2. 각 타깃 프리팹들의 Inspector에서, Point Value 변수 값을 나쁜 타깃들의 음수 값을 포함하여 의미가 있는 값들로 설정해주세요.

3. 새로운 변수를 추가하여 UpdateScore(pointValue);로 바꿔주세요.

 

 


 

8. 폭발 파티클 추가하기

점수 부분은 이제 기능상으로는 완벽하지만, 타깃을 클릭하는 부분은 아직 조금... 불만족스럽습니다. 타깃을 클릭할 때마다 폭발 파티클이 발생하도록 만들어서 게임을 좀 더 멋지게 꾸며보겠습니다.

 


(영상: 링크 참조)


 

1. Target.cs에서, public ParticleSystem explosionParticle 변수를 새로 추가해주세요.

2. 각각의 타깃 프리팹들에 Course Library > Particles에서 파티클 프리팹Explosion Particle 변수에 할당해주세요.

3. OnMouseDown() 함수 안에, 새로 추가한 폭발 프리팹을 인스턴스화해주세요.

 

 


 

9. 내용 복습


(영상: 링크 참조)


 

새로 배운 기술들

- 스크린에 스코어를 표시하는 UI 요소가 추가되었습니다.

- 표시되는 플레이어의 점수가 타깃을 맞췄을 때마다 갱신됩니다.

-플레이어가 오브젝트를 클릭할 때마다 폭발 파티클이 재생됩니다.

 

새로 배운 개념과 기술들

- TextMeshPro

- Canvas

- Anchor Points

- 라이브러리 추가

- 매개변수를 사용하는 사용자 정의 메서드

- 다른 스크립트 파일에 있는 메서드 호출

 

다음 시간에 학습할 내용

- 몇 가지 UI 요소를 다시 사용해볼 것입니다. - 이번에는 플레이어에게 게임 오버를 알려주도록 만들어 보고, 게임을 다시 시작하는 기능을 넣어보도록 하겠습니다!

 


 


수고하셨습니다!


0 Comments