Unity 볼 롤링 자습서 3-3. 점수와 텍스트 표시
이 기사의 대상자
OS나 환경이라든가
보충
공식
아이템 카운트
PlayerController 스크립트에 항목 카운트 기능 추가
단순히 스크립트에 int 형 count 변수를 준비하기 만하면됩니다.
그러나 이대로는 내부적으로 수치가 증가하는 것만으로 플레이어에게 전해지지 않는다
Unity에서 텍스트 표시
Unity의 UI 도구 세트 사용
UI>Text 추가
추가하면 Text의 부모로 Canvas, EventSystem이 추가되었습니다.
이것은 Unity의 사양으로, 모든 UI 요소는 Canvas의 자식 요소로서 기능시켜야 한다는 철의 갠이 있다(아마)
Text를 "Count Text"로 이름 바꾸기
추가되었지만 색상이 까맣고 수수하게 보이기 때문에 흰색으로 변경
Text 객체에는 다른 객체와 달리 Rect Transform이 존재한다
점수 표시 위치 조정
Anchor Presets 보기
Shift+Alt 키를 누른 상태에서 맨 왼쪽 상단의 아이콘을 누릅니다.
화면의 좌상단에 텍스트가 배치되지만, 이대로라면 텍스트가 너무 빠져서 넘어져 보인다
그래서 PosX, PosY를 조정하고 공백을 갖게하면 그것처럼 보입니다.
count 값 반영
PlayerController 스크립트에서 UnityEngine.UI의 Text를 사용하여 연결
이제 PlayerController 측에 필드가 늘어나므로 거기에 CountText를 드래그하여 연결
※ 최종적인 소스는 마지막에 쓰므로 움직임은 그쪽을 참고로 하는 일
↓연결하면 이와 같이 된다
게임 종료
UI>Text로 종료를 위한 텍스트 객체 추가
자동으로 Canvas 아래에 추가되므로 아래와 같이 조정
요소
값
Pos Y
75
Font Size
24
칼라
화이트
텍스트
Win Text
이것으로 아래와 같은 상태가 되므로, 실제로 종료 조건을 만족했을 때에 「Win Text」가 갱신되는 스크립트를 구현
스크립트를 구현한 후 Player 객체의 Win Text 필드로 드래그하여 연결하면 완성
최종 PlayerController.cs
PlayerController.cs
using System;
using UnityEngine;
using UnityEngine.UI;
public class PlayerController : MonoBehaviour
{
public float speed;
public Text countText;
public Text winText;
private Rigidbody rb;
private int count;
// See also:https://docs.unity3d.com/ja/2019.1/Manual/ExecutionOrder.html
private void Start()
{
rb = GetComponent<Rigidbody>();
count = 0;
SetCountText();
winText.text = "";
}
private void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal,0.0f,moveVertical);
rb.AddForce(movement * speed);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Pick Up"))
{
other.gameObject.SetActive(false);
count++;
SetCountText();
}
}
private void SetCountText()
{
countText.text = "Count :" + count.ToString();
if (count >= 12)
{
winText.text = "You Win!";
}
}
}
Reference
이 문제에 관하여(Unity 볼 롤링 자습서 3-3. 점수와 텍스트 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/win-chanma/items/5fcef97165253d679815
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using System;
using UnityEngine;
using UnityEngine.UI;
public class PlayerController : MonoBehaviour
{
public float speed;
public Text countText;
public Text winText;
private Rigidbody rb;
private int count;
// See also:https://docs.unity3d.com/ja/2019.1/Manual/ExecutionOrder.html
private void Start()
{
rb = GetComponent<Rigidbody>();
count = 0;
SetCountText();
winText.text = "";
}
private void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal,0.0f,moveVertical);
rb.AddForce(movement * speed);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Pick Up"))
{
other.gameObject.SetActive(false);
count++;
SetCountText();
}
}
private void SetCountText()
{
countText.text = "Count :" + count.ToString();
if (count >= 12)
{
winText.text = "You Win!";
}
}
}
Reference
이 문제에 관하여(Unity 볼 롤링 자습서 3-3. 점수와 텍스트 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/win-chanma/items/5fcef97165253d679815텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)