본문 바로가기

취미로 하는 게임코딩_gameCodingAsHobby/유니티unity로 게임 만들기

유니티46_게임 제작 과정 15_점수 이벤트

앞 글에 이어서 Score 구현을 완성해보자.

 

Text 컴퍼넌트 연결

 

 

4번 줄에 UnityEngine.UI를 사용할 수 있도록 한다.

앞에서 점수를 표시하기 위해 UI-Text로 Text컴퍼넌트를 추가했었다.

이 Text컴퍼넌트는 아래에서 보듯이 스크립트로 작성되어 있으며 열어보면 Text 클래스가 네임스페이스 UnityEngine.UI 안에 있다는 것을 확인할 수 있다.

 

 

Text컴퍼넌트 안에 표시되는 메세지에 접근하거나 편집하려면 이 Text클래스를 사용해야 한다.

계속해서 12번 줄에는 점수를 담을 변수 score를 선언한다.

13번 줄에는 Text타입의 TextScore 필드를 선언해서 Inspector창에 등록한다.

여기에 앞에서 만들었던 TextScore 컴퍼넌트를 연결하면 된다.

 

 

스크립트를 저장한 후 GameManager의 Inspector창에 가서 TextScore를 연결한다.

 

점수 올리는 메서드 만들기

이제 점수와 TextScore 메시지를 변경하는 메서드를 만들면 된다.

GameManager.cs에 EnemyDies(적이 죽다)라는 메서드를 작성한다.

 

29번 줄에 score변수를 1 증가한다.

30번 줄에 TextScore의 text부분에 score변수 값을 넣은 문자열을 출력한다.

C# String.Format 글에서 위와 같이 string.Format을 사용하여 문자열로 서식을 변경할 때는 using System을 사용하지 않아도 된다고 했다. 만약 String.Format()을 사용하려면 using System을 선언해야 한다.

 

 

EventManager스크립트

이벤트를 이용해서 적이 죽으면 EnemyDies()메서드가 실행되도록 한다.

 

유니티 Scripts 폴더에 새 스크립트를 만들고 이름을 EventManager로 수정한다.

 

4번 줄에 Action을 사용하기 위해 using System을 선언한다.

8번 줄에 EnemyDiesEvent라는 반환값 없는 델리게이트 타입인 Action을 선언한다.

EventManager 객체를 생성하지 않고도 접근할 수 있도록 static을 사용한다.

10번 줄에 이벤트를 받는 곳이 null(없음)이 아닐 때 이벤트가 호출되도록 하는 메서드를 정의한다.

 

이번에는 EnemyDiesEvent라는 이벤트가 호출되었을 때 점수를 올리는 메서드를 넣어주어야 한다.

GameManager.cs 스크립트는 시작버튼이 클릭되면 호출된다.

이때 처음 호출되는 Start()메서드 안에 이벤트에 점수 올리는 메서드를 추가하도록 위와 같이 17번 줄을 작성한다.

 

이제 적이 죽었을 때 이벤트를 실행해주면 된다.

Enemy.cs 스크립트에는 적이 죽을 때 실행하는 Die()메서드가 있다.

적이 파괴되기 전에 이벤트를 실행하도록 41번 줄 코드를 작성한다.

 

스크립트를 모두 저장하고 게임을 실행해서 테스트 해보자.

 

적이 죽을 때 마다 점수가 올라가는 것을 확인할 수 있다.

 

끝.

Wraven...