목표
- 공이 골 역할 벽에 닿았을때 점수를 ui에 표시되게 할 것이다.
Ball.cs (스크립트)
private void OnCollisionEnter2D(Collision2D collision)
{
if(collision.gameObject.CompareTag("Paddle"))
{
direction.x = -direction.x;
}
if (collision.gameObject.CompareTag("Wall"))
{
direction.y = -direction.y;
}
if (collision.gameObject.CompareTag("LeftGoalWall")||collision.gameObject.CompareTag("RightGoalWall"))
{
if (collision.gameObject.CompareTag("RightGoalWall"))
{
GameManager.instance.AddScore(true);
RespawnBall(true);
}
else
{
GameManager.instance.AddScore(false);
RespawnBall(false);
}
}
}
- Debug.Log로 처리하는 부분을 다음과 같이 바꾼다.(함수에 대한 기능은 아래 GameManager.cs 스크립트 참조)
GameManager.cs (스크립트)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
private int leftScore;
private int rightScore;
public Text leftScoreText;
public Text rightScoreText;
public static GameManager instance
{
get
{
if (m_instance == null)
{
m_instance = FindObjectOfType<GameManager>();
}
return m_instance;
}
}
private static GameManager m_instance;
void Start()
{
leftScore = 0;
rightScore = 0;
}
public void AddScore(bool isLeftwin)
{
if(isLeftwin)
{
leftScore++;
leftScoreText.text = leftScore.ToString();
}
else
{
rightScore++;
rightScoreText.text = rightScore.ToString();
}
}
}
- 다음과 같이 새 스크립트 작성
public static GameManager instance
{
get
{
if (m_instance == null)
{
m_instance = FindObjectOfType<GameManager>();
}
return m_instance;
}
}
private static GameManager m_instance;
- 싱글톤 패턴
- 외부 스크립트에서 instance를 통해 자유롭게 GameManager에 접근할 수 있다.
void Start()
{
leftScore = 0;
rightScore = 0;
}
public void AddScore(bool isLeftwin)
{
if(isLeftwin)
{
leftScore++;
leftScoreText.text = leftScore.ToString();
}
else
{
rightScore++;
rightScoreText.text = rightScore.ToString();
}
}
- Start 함수에서 점수를 0으로 초기화한다
- AddScore을 통해 이긴 편의 점수를 1씩 올리고, 그 점수를 ui에 반영시킨다.
스크립트 적용
- Create Empty를 이용해 빈 오브젝트 생성
- 오브젝트에 GameManager 적용
- GameManager의 Text부분들을 해당 Text 할당시키기
결과
- 게임이 진행되면서 골을 넣으면 점수를 얻고, 그 사실을 ui를 통해 알 수 있다.
'유니티로 Pong 게임 만들기' 카테고리의 다른 글
7) 유니티로 Pong 게임 만들기 - 게임 종료 처리, 타이머 추가, 게임종료ui 추가 (0) | 2024.01.24 |
---|---|
5) 유니티로 Pong 게임 만들기 - 공이 골 역할을 하는 벽에 닿았을 때 처리 (0) | 2024.01.24 |
4) 유니티로 Pong 게임 만들기 - 공이 패달과 벽에 닿았을때 튕겨내기 (0) | 2024.01.24 |
3) 유니티로 Pong 게임 만들기 - 공 발사되게 하기 (0) | 2024.01.24 |
2) 유니티로 Pong 게임 만들기 - 패들 움직이게 하기 (0) | 2024.01.24 |