골드메탈님 퍼즐게임 08 마무리
unity 유니티 공부 2025. 11. 15. 17:30 |https://www.youtube.com/watch?v=aKSsXg3vHPg&list=PLO-mt5Iu5TeajtA5UQT7_2UjB7_dkGagU&index=8

지금껏 만든 게임 매니저 인스펙터창은 지저분하다
이걸 정리할 필요가 있다
헤더 어트리뷰트
[Header ( "원하는 이름" ) ]
이렇게 하면 컴포넌트에 주석처럼 이름 붙여짐

헤더를 이용해 구분지어 정리 함

인스펙터 창 퍼블릭 변수 순서는
직접 ctrl x 눌러서 잘라붙이기해서 순서 변경함
+
ui 사용하려면 스크립트 맨위
네임스페이스 불러오기 해야함
using UnityEngine.UI;
강의에선 게임매니저 스크립트 속에 넣음
+

하이어라키 창 canvas - canvas scaler 컴포 -
ui scale mode 에선 세 가지 옵션이 있다
Constant Pixel Size
픽셀 크기 고정
구버전 PC 창모드 게임 전용
Scale With Screen Size
기준 해상도(reference resolution)를 잡고
화면 크기에 따라 UI 크기를 비율로 조절
가장 많이 쓰는 모드
모바일, 태블릿, PC 모두 대응 가능
Reference Resolution 를 예: 1920×1080 이 값을 기준으로 UI를 그 크기로 맞춤
여기에 숫자를 크게 입력할수록 인게임 텍스트 글자수는 반비례 해서 작아보여짐
Constant Physical Size
UI를 실제 물리적 크기(cm, inch)로 맞춤
게임에서는 안씀
+

렉트 트랜스폼 기준점 변경시 쉬프트 알트 키 누르기
+

text legacy 에서
width height 신경안쓰고 0 0 으로 설정했는데
텍스트는 출력하고 싶으면
아래 H/V Overflow 를 Overflow 로 설정
지정 크기 밖으로 벗어나 글자를 출력한다는 뜻
+
void LateUpdate()
{
}
생명주기 함수
Update 생명주기에서 만든 로직을 활용하고 싶을 때 씀
지금 강의에선 스코어 점수를 ui 에 연결하려 할 때 씀
+
scoreText.text = score.ToString() ;
int 변수를 스트링으로 바꾸려면 ToString 을 씀
+


분명 오위 정렬했는데 텍스트가 안 보인다

Alignment 를 바꿔줘야 함

그러면 삐져나갔던 폰트가 화면 안으로 잘 보이게 됨
+
PlayerPrefs
=
소규모 저장소
게임 설정을 적어두는 작은 메모지
딱 간단한 정보만 적어놓는 용도
PlayerPrefs 은 씬을 로드하거나 게임을 꺼도 데이터가 남아있음
언제 쓰면 좋음?
BGM 볼륨
마지막 스테이지 번호
최고 점수
닉네임
해상도 설정
옵션 ON/OFF
주의점
큰 데이터, 리스트, 세이브 파일용으로는 부적합
이건 JSON, BinaryFormatter, ScriptableObject 따로 써야 함
+
max score , 최고 점수는
Awake 생명주기 에다가 만들자
+
HasKey()
저장된 데이터가 있는지 확인 하겠다
if ( ! PlayerPrefs.HasKey("MaxScore") )
뜻은 MaxScore 라는 저장된 값이 없으면.. 라는 뜻
if (!PlayerPrefs.HasKey("MaxScore"))
{
PlayerPrefs.SetInt("MaxScore", 0);
}
MaxScore 라는 저장된 값이 없으면
0 으로 만들고 시작하겠다 라는 뜻
+
int maxScore = Mathf.Max(score, PlayerPrefs.GetInt("MaxScore"));
PlayerPrefs.SetInt("MaxScore", maxScore);
현재 점수(score) 와 저장된 최고 점수(MaxScore) 중에서
더 큰 값을
maxScore 에 저장한다는 뜻
강의 내에선 이 로직을 게임 오버 하는 곳에 넣음
+
subScoreText.text = "점수 :" + scoreText.text;
점수 : 123
이런식으로 표시되게 함
+
using UnityEngine.SceneManagement;
재시작은 지금 씬을 다시 로드 하는 거임
씬을 불러오기 기능을 넣으려면 위의 네임스페이스를 써야 함
SceneManager.LoadScene(0);
씬 첫번째 걸 불러온다
+
씬 이름 알고 싶으면
프로젝트 파일 뒤지면 됨
Scenes 폴더 안에 있음


file - build settings - Scene List
에서 씬이 인 게임에 포함되어있나 확인 가능
+

다시 하기 버튼 아래엔
on click 에 리셋 함수 연결
space 바 로 클릭 단축기 되는걸 없애려면
navigation none 으로 설정
+
게임 오버시
bgmPlayer.Stop();
해서 브금을 끌 수 있다
+
다 완성 되면 아래 gif 같아짐

