[Unity Tutorial Roll-a-ball 07] Displaying the Score and Text

1. 점수 카운트 변수 생성 및 계산

PlayerController 스크립트 수정

}

    // 에디터 안 Inspector에서 편집 가능한 속도 조정 변수 생성
    public float speed;
    // Rigidbody 형태의 변수 생성
    private Rigidbody rb;
    // 점수 카운트 변수
    private int count;

    // 스크립트가 활성화된 첫 프레임에 호출
    void Start()
    {
        // 현재 오브젝트의 Rigidbody를 참조
        rb = GetComponent<Rigidbody>();
        // 점수 초기화
        count = 0;
    }

    // 프레임을 렌더링 하기 전에 호출
    void Update()
    {

    }

    // 물리효과 계산을 수행하기 전에 호출
    void FixedUpdate()
    {
        // 키보드의 키로 컨트롤하는 수평 축의 입력 (left, right)
        float moveHorizontal = Input.GetAxis("Horizontal");
        // 키보드의 키로 컨트롤하는 수직 축의 입력 (up, down)
        float moveVertical = Input.GetAxis("Vertical");

        // 플레이어의 이동량을 선언 (x축, y축, z축)
        Vector3 movemnet = new Vector3(moveHorizontal, 0, moveVertical);
        // 플레이어의 Rigidbody에서 movement 값만큼 힘을 가해서 이동시킴
        rb.AddForce(movemnet * speed);
    }

    // 트리거 콜라이더를 처음 접촉할 때 호출
    void OnTriggerEnter(Collider other)
    {
        // 오브젝트의 태그 값 비교
        if ( other.gameObject.CompareTag("PickUp"))
        {
            // 오브젝트 비활성화
            other.gameObject.SetActive(false);
            // 점수 카운트 업
            count = count + 1;
        }       
    }

2. UI 점수 텍스트 생성

Hierarchy -> Create -> UI -> Text -> CountText로 이름 변경

CountText -> Color -> 흰색으로 색상 변경

CountText -> Rect Transform -> 설정 (톱니 바퀴) -> Reset

CountText -> Rect Transform -> custom 박스를 Shift + Alt + 마우스 우클릭 -> left, top 선택 

CountText -> Rect Transform -> Pos X : 10, Pos Y : -10 으로 변경

3. UI 승리 텍스트 생성

Hierarchy -> Create -> UI -> Text -> WinText로 이름 변경

WinText-> Color -> 흰색으로 색상 변경

WinText-> Rect Transform -> 설정 (톱니 바퀴) -> Reset ->Pos Y : 75 로 변경

WinText-> Character -> Font Size : 24 로 변경

WinText-> Paragraph -> Alignment 가운데 정렬로 변경

4. UI 점수, 승리 텍스트 초기화 및 표시

PlayerController 스크립트 수정

 // UI 엔진
using UnityEngine.UI;

public class PlayerController : MonoBehaviour {

    // 에디터 안 Inspector에서 편집 가능한 속도 조정 변수 생성
    public float speed;
    // 에디터의 UI 점수 텍스트
    public Text CountText;
    // 에디터의 UI 승리 텍스트
    public Text WinText;

    // Rigidbody 형태의 변수 생성
    private Rigidbody rb;
    // 점수 카운트 변수
    private int count;

    // 스크립트가 활성화된 첫 프레임에 호출
    void Start()
    {
        // 현재 오브젝트의 Rigidbody를 참조
        rb = GetComponent<Rigidbody>();
        // 점수 초기화
        count = 0;
        // 점수 텍스트 표시
        SetCountText();
        // 승리 텍스트 초기화
        WinText.text = "";
    }

    // 프레임을 렌더링 하기 전에 호출
    void Update()
    {

    }

    // 물리효과 계산을 수행하기 전에 호출
    void FixedUpdate()
    {
        // 키보드의 키로 컨트롤하는 수평 축의 입력 (left, right)
        float moveHorizontal = Input.GetAxis("Horizontal");
        // 키보드의 키로 컨트롤하는 수직 축의 입력 (up, down)
        float moveVertical = Input.GetAxis("Vertical");

        // 플레이어의 이동량을 선언 (x축, y축, z축)
        Vector3 movemnet = new Vector3(moveHorizontal, 0, moveVertical);
        // 플레이어의 Rigidbody에서 movement 값만큼 힘을 가해서 이동시킴
        rb.AddForce(movemnet * speed);
    }

    // 트리거 콜라이더를 처음 접촉할 때 호출
    void OnTriggerEnter(Collider other)
    {
        // 오브젝트의 태그 값 비교
        if ( other.gameObject.CompareTag("PickUp"))
        {
            // 오브젝트 비활성화
            other.gameObject.SetActive(false);
            // 점수 카운트 업
            count = count + 1;
            // 점수 텍스트 표시
            SetCountText();
        }
    }

    // 점수 텍스트 표시
    void SetCountText()
    {
        CountText.text = "Count: " + count.ToString();
        // 12개 오브젝트 전부 수집시에 승리 텍스트 표시
        if (count >= 12)
        {
            WinText.text = "You Win!";
        }
    }
}

Player -> Inspector -> Player Controller(Script) -> Count Text, Win Text에 UI Text 설정

 

-Reference

[Displaying the Score and Text] https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial/displaying-score-and-text?playlist=17141

 

+ Recent posts