어떤 게임이든 화면상에 나타내 주는 무언가들이 있습니다. 바로 UI들 입니다!
UI에서 나타내줄 수 있는 것들로는 점수, 보상, 메뉴, 종료버튼 등 다양합니다.
이것들을 유니티에서는 버튼, 텍스트등으로 표현가능한데
이번엔 텍스트 부분만 사용해보겠습니다!
먼저 텍스트를 만들어 봅시다.
우클릭 >> UI >>text 클릭
그러면 바로 캔버스 판과 text가 생성됩니다!
디테일 창에서 텍스트의 위치, 크기 , 글꼴 등을 지정할수있으니
화면에 맞게 조정해줍시다.
위 처럼 조정이 끝났다면
텍스트 띄우기는 끝났습니다!!
하지만.. 저걸 계속해서 갱신해 주어야겠죠..
물론 이 텍스트에도 스크립을 넣어줄수있어 자체적으로 갱신이 가능합니다.
하지만 점수인 경우 캐릭터에서 텍스트로 값을 넘겨주어야 하는 경우가 발생합니다.
이 경우에 2가지 방법이 있습니다.
1. 캐릭터에서 점수를 연동해준다!
2. 빈 오브젝트에서 점수를 계속해서 보내준다!
1번의 경우 오브젝트 손실이 없겠네요! 하지만 캐릭터가 바뀐다면..? >> 문제가 발생합니다.
그렇기에 점수등과 같이 계속해서 사용하려는 정보는 빈 오브젝트에서 저장,처리 해주는 방법을 사용합니다!
(일단 이부분은 제가 익숙해져서사용하는 방법입니다.)
그럼 일단 시작!
먼저 빈 오브젝트와 새로운 스크립을 만들어 줍시다.
다음으로 스크립을 작성해줍시다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro; /// ui text를 불러오기위한 부분
using UnityEngine.UI;
public class score : MonoBehaviour
{
// Start is called before the first frame update
public TextMeshProUGUI text;// 텍스트를 받아올 부분
public int allscore = 0;// 점수를 받아올 부분
void Start()
{
}
// Update is called once per frame
void Update()
{
text.text=allscore;
}
여기 까지 작성한다면 아래처럼 뜨게되고
이제 드래그로 Text에 아까 만들어 두었던 텍스트를 넣어줍시다.
****public으로 선언해야 아래처럼 나옵니다! (다른곳에서도 사용할수있게 공용변수를 선언하는 것)
이러면 연결끝!
하지만 아직 빈오브젝트의 텍스트와 UI의 텍스트만 연결되어있습니다.
여기서! 캐릭터와 빈오브젝트도 연결해주어야합니다.... >>> 복잡해보이지만 똑같은 형식입니다.
다시시작!
캐릭터에도 스크립을 하나 만들어줍시다.
그리고 바로 아래의 코드를 추가해줍시다.
public score score_save; /// 빈오브젝트의 스크립 형식을 score_save로 사용하겠다!
아까와 마찬가지로 이번엔 빈오브젝트를 넣어줍시다.
이렇게 되면 score_save에 빈오브젝트의 score 스크립이 들어가게됩니다!
이제 캐릭터 스크립에 아래처럼 충돌시 점수가 증가하도록 바꿔준다면?
private void OnCollisionEnter(Collision collision)
{
Destroy(other.gameObject);
score_save.allscore += 1;
}
UI의 텍스트도 갱신되는걸 볼수있습니다!
크게 보면
캐릭터 >> 빈오브젝트.스크립 >> 텍스트
순으로 계속해서 정보를 전달하는 방식입니다!
더 쉬운 방법도 있을것 같은데 저는 위의 방법을 사용하고있습니다.
갱신해야할 것들이 많아지고, 캐릭터가 늘어가면서 이 정보들을 한군데에서 관리한다는 느낌으로 사용했습니다.
더 좋은 방법이 있다면 댓글로 알려주시면 감사하겠습니다!
틀린점이 있다면 댓 달아주세요!
'유니티 최고 > 유니티 기초' 카테고리의 다른 글
유니티(Unity) ui 이미지 추가 & sprite 추가 (0) | 2022.11.08 |
---|---|
유니티(Unity) 기본적인 소리(sound) 출력하기 (여러sound 포함) (0) | 2022.11.07 |
유니티(Unity) 액터 충돌 감지함수들 + 태그 이용법 (0) | 2022.10.19 |
유니티(Unity) 시작하기 - 2 (조작, 주요 기능) (0) | 2022.08.23 |
유니티(Unity) 시작하기 - 1 (설치, 설정) (0) | 2022.08.23 |
댓글