점수 표시
Canvas라는 부모 오브젝트를 만든다. Hierarchy에서 오른쪽 마우스를 누르고 UI->Text
스마트 폰의 크기에 따라서 화면 사이즈가 다를 수 있는데, 어떤 스크린에 상관없이 꽉 채운 화면을 만들겠다. 라는 의미
Anchor의 크기를 MIN X:0, Y:0 / MAX X:1, Y:1로 설정을 해주면 왼쪽의 화살표들이 화면의 비율에 맞도록 설정된다. 그리고 그 위의 Left, Top, PosZ, Right, Bottom들을 다 0으로 설정해주면 그림과 같이 텍스트가 위의 왼쪽에 나오도록 배치된다.
inspector의 파란색 박스 안에 가운데 정렬들을 해주면 화면에 정 가운데에 텍스트가 배치된다.
텍스트의 글씨를 변경해줄 수 있다.
Anchor의 MIN MAX 값을 조절을 해줘야된다. 위의 그림처럼 Y의 MIN값을 0.8로 해주면 0.8만큼 커서가 위로 올라가게 된다. 그럼 이제 거기서부터 0,0이 된다고 생각해주면 됨. 그럼 이제 설정해준 Anchor값을 기준으로 텍스트를 설정해줄 수 있고, 그럼 오른쪽의 화면처럼 위 쪽의 가운데에 텍스트가 나오게 된다.
Score를 관리해주기 위한 Component를 만들어준다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//using UnityEngine.UI; : 스코어가 바뀔 때마다 UI적 요소의 변화를 주기 위해 using을 해줘야된다.
public class Score : MonoBehaviour
{
public static int score = 0;
//static을 붙여줌으로써 다른 클래스에서도 score를 조절가능하다.
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
GetComponent<Text>().text = score.ToString();
//GetComponent: Component를 들고와줌.
//ToString : int형을 string으로 변환
}
}
파이프 사이를 지나갈 때 스코어 올리기
Pipe 객체에 ScoreUp이라는 자식 요소를 만들어준다. 그리고 Box Collider 2D 컴포넌트를 추가해줌.
파이프 사이를 지나갈 때마다 점수를 추가해주려면 Collider의 범위를 파이프 사이로 지정해줘야됨. 그럴려면 일단 Position의 X,Y를 조절해가며 파이프의 중간 부분에 맞춰주고 Edit Collider를 눌러 마우스로 둘의 사이를 제대로 조절해줌. 그 뒤에 is Trigger를 체크 표시해준다.
Is Trigger : 물체가 그 사이를 지나갈 때 못 지나가게 되는것은 Collision, 그 사이를 지나갈 수 있게 하는 것은 Trigger 따라서 지금은 그 사이를 지나갔을 때 Score를 올려야하니 Trigger로 설정을 해두고 지나갈 때 score를 올리도록 해줘야됨.
그 뒤에 ScoreUp이라는 Component를 추가해준다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScoreUp : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision)
//OnTriggerEnter2D : 진입할 때
{
Score.score++;
//Score란 클래스의 score를 올린다.
}
}